openfire 메시지 발송

11774 단어 openfire
demo를 찾았고 xmpp 프로토콜을 기반으로 하는 오픈파이어 클라이언트 간의 메시지 발송을 예시했다.
코드는 두 개의 가방이 필요합니다,smack.jar ,smackx.jar.
첫 번째 코드는 단지 점대점으로 메시지를 보내는 것일 뿐 방송과 관련이 없다.
package com.test;

import java.io.BufferedReader;
import java.io.InputStreamReader;

import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message;

public class ChatTest {

    public static void main(String[] args) throws XMPPException {
        // TODO Auto-generated method stub
        XMPPConnection.DEBUG_ENABLED=true;
        XMPPConnection connection=new XMPPConnection("127.0.0.1");
        connection.connect();
        connection.login("zhang", "12345");
        Chat chat=connection.getChatManager().createChat("[email protected]", new MessageListener() {
            
            @Override
            public void processMessage(Chat chat, Message message) {
                // TODO Auto-generated method stub
                System.out.println(message.getFrom()+" "+new java.util.Date().toString()+" say:"+message.getBody());
            }
        });
        BufferedReader cmdl=new BufferedReader(new InputStreamReader(System.in));
        for (; ; ) {
            try {
                String cmd=cmdl.readLine();
                if ("!q".equalsIgnoreCase(cmd)) {
                    break;
                }
                chat.sendMessage(cmd);
            } catch (Exception e) {
                // TODO: handle exception
                e.printStackTrace();
            }
        }
        connection.disconnect();
        System.exit(0);
    }
}

login 방법의 매개 변수는 현재 로그인할 계정이고createchat 방법의 매개 변수는 채팅하는 상대방의 계정입니다.실행할 때,liu는spark 클라이언트에 로그인하고, 본 컴퓨터의 console에서liu와 교류할 수 있습니다.
두 번째는 방송과 관련된 것이지만 사실은 하나의 방법이다.방송 기능을 사용하려면 오픈파이어 서버에 방송 플러그인을 설치해야 합니다. 그렇지 않으면 방송을 보낼 수 없습니다.
package com.test;

import java.util.Collection;
import java.util.Scanner;

import org.jivesoftware.smack.Chat;
import org.jivesoftware.smack.ChatManager;
import org.jivesoftware.smack.MessageListener;
import org.jivesoftware.smack.RosterEntry;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.XMPPException;
import org.jivesoftware.smack.packet.Message;

public class IMTest {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        XMPPConnection.DEBUG_ENABLED=true;
        XMPPConnection connection=null;
        try {
            IMTest test=new IMTest();
            connection=test.getConnection();
            test.doLogin(connection);
            test.getRoster(connection);
            //test.sendMessage(connection);
            test.sendPacket(connection);
        } catch (Exception e) {
            // TODO: handle exception
            e.printStackTrace();
        }finally{
            connection.disconnect();
        }
    }

    private XMPPConnection getConnection() throws XMPPException{
        XMPPConnection con=new XMPPConnection("127.0.0.1");
        con.connect();
        return con;
    }
    
    private void doLogin(XMPPConnection connection) throws XMPPException{
        connection.login("admin", "12345");
        System.out.println(connection.getUser()+" has logined");
    }
    
    private Collection<RosterEntry> getRoster(XMPPConnection connection){
        Collection<RosterEntry> roster=connection.getRoster().getEntries();
        for(RosterEntry entry:roster){
            System.out.println("name :"+entry.getName()+",jid:"+entry.getUser());
        }
        return roster;
    }
    
    private void sendMessage(XMPPConnection connection) throws XMPPException{
        ChatManager chatManager=connection.getChatManager();
        Chat chat=chatManager.createChat("[email protected]", new MessageListener() {
            //      
            @Override
            public void processMessage(Chat chat, Message message) {
                // TODO Auto-generated method stub
                System.out.println(message.getFrom()+" say: "+message.getBody());
            }
        });
        //    
        Scanner inputScanner=new Scanner(System.in);
        while(true){
            String messageString=inputScanner.nextLine();
            System.out.println(connection.getUser()+" say:"+messageString);
            chat.sendMessage(messageString);
        }
    }
    
    private void sendPacket(XMPPConnection connection){
        Message message=new Message();
        message.setTo("[email protected]");
        message.setSubject("  ");
        message.setBody("    ");
        message.setType(Message.Type.normal);//    
        connection.sendPacket(message);
        connection.disconnect();
    }
}

라디오를 보낼 때 setTo에 @ 뒤에broadcast 표식이 있습니다. 이것은 없어서는 안 됩니다.
그러나 현재 방송 소식은 때때로 메시지가 중복 발송되는 경우가 있다.현재는 지난 글에서 말한 androidpn을 이용하여 메시지 전송을 하려고 하는데, 여기서는 더 이상 자세히 연구하지 않았다.

좋은 웹페이지 즐겨찾기