Android中基于XMPP协议实现IM聊天程序与多人聊天室

2019-12-10 18:59:56于丽

以上代码如果在一般的Java Project上运行需要加入smack.jar 和klmx2.jar,如果是Android Project,基本代码不需改变只需将其放入onCreate(...)方法下即可,需要加入asmack.jar包.

1、ConnectionConfiguration
 作为用于与XMPP服务建立连接的配置。它能配置;连接是否使用TLS,SASL加密。
 包含内嵌类:ConnectionConfiguration.SecurityMode

2、XMPPConnection.
 XMPPConnection这个类用来连接XMPP服务.
 可以使用connect()方法建立与服务器的连接。disconnect()方法断开与服务器的连接. 
 在创建连接前可以使用XMPPConnection.DEBUG_ENABLED = true; 使开发过程中可以弹出一个GUI窗口,用于显示我们的连接与发送Packet的信息。

Android中基于XMPP协议实现IM聊天程序与多人聊天室

3、ChatManager
 用于监控当前所有chat。可以使用createChat(String userJID, MessageListener listener)创建一个聊天。
 
4、Chat
 Chat用于监控两个用户间的一系列message。使用addMessageListener(MessageListener listener)当有任何消息到达时将会触发listener的processMessage(Chat chat, Message message) 
方法.
 我们可以使用sendMessage()发送消息,这个方法有两个重载方法,一种类类型的参数时String类型,另一种则是传入Message对象(后面介绍)。
 那么有这样一种情况,当别人主动跟我们建立连接发送消息,或者系统发送消息时我们怎么才能接收消息呢?
    我现在是这样操作的:

 chatmanager.addChatListener(new ChatManagerListener() {
 @Override
 public void chatCreated(Chat chat, boolean createdLocally) {
  chat.addMessageListener(new MessageListener() {
  @Override
  public void processMessage(Chat chat, Message message) {
   System.out.println("Received message: " + message.getBody());
  }
     
  });
 }
 });