XMPP通讯开发-好友通信实现

在 XMPP通讯开发-弹出好友通信对话框的逻辑设计  中我们实现双击好友弹出聊天的对话框,那只是一个框架,而我们要真是的实现聊天需要重写JDialog里面的内容JPanel。这里我们可以根据好友聊天需要的基本的功能,我们需要使用的是ChatManager这个聊天管理器,然后与指定用户建立Chat session,之后就可以发送和接收消息了。这部分我们可以看官方的文档smack_3_3_0\documentation\messaging.html里面Messaging using Chats,根据官网给出的例子,我们可以知道需要好友的XMPP的地址,还有就是connection,所以我们在构造JPanel的时候,需要传递这两个参数。我们看一下代码:

public void setChatPanel(XMPPConnection conn, String frindsXmppAddress){
        this.conn = conn;
        this.frindsXmppAddress = frindsXmppAddress;
        CreateChatM();
        dateUtils = new DateUtils();
        chatName.setText(frindsXmppAddress);
    }

 private void CreateChatM(){
        if(conn != null){
            chatManager = conn.getChatManager();
            chat = chatManager.createChat(frindsXmppAddress, 
                    new MessageListener(){
                @Override
                public void processMessage(Chat chat, Message msg) {
                    if(msg != null){
                        ChatMessage.append(dateUtils.getHM()+"  "+frindsXmppAddress+": "+msg.getBody()+"\n");
                    }
                }
            });
        }
    }

双击部分代码如下:

ChatPanel chatPanel = new ChatPanel();
chatPanel.setChatPanel(conn, "123@zhangjie");
JDialog chatDialog = new JDialog();
chatDialog.setContentPane(chatPanel);
chatDialog.setSize(501, 512);
chatDialog.setVisible(true);
初始化ChatPanel后,然后设置那两个相关的参数,同时创建对话信息,然后启动JDialog显示界面,在下面的对话框中填写要发送的信息,点击发送,就会将填写的信息发送给123@zhagnjie上面,点击按钮功能如下:
private void SendChatBtnMouseClicked(java.awt.event.MouseEvent evt) {                                         
        String Content = ChatContent.getText();
        try {
            chat.sendMessage(Content);
             ChatMessage.append(dateUtils.getHM()+"  自己: "+Content+"\n");
             ChatContent.setText("");
        } catch (XMPPException ex) {
            Logger.getLogger(ChatPanel.class.getName()).log(Level.SEVERE, null, ex);
        }
    }    
另一个客户端我是用的是Spark进行测试的,效果图如下:

XMPP通讯开发-好友通信实现_第1张图片

两个可以正常的通信。

源码项目:https://github.com/jwzhangjie/IChat_PC.git

你可能感兴趣的:(聊天,XMPP,通讯)