热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

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

在XMPP通讯开发-弹出好友通信对话框的逻辑设计中我们实现双击好友弹出聊天的对话框,那只是一个框架,而我们要真是的实现聊天需要重写JDialog里面的内容JPanel。这里我们可以根据好

在 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进行测试的,效果图如下:



两个可以正常的通信。

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


推荐阅读
author-avatar
alloyer
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有