Android之asmack通信客户端

 最近用asmack做一个android的手机客户端(openfire做服务器),一开始connect服务器都失败,这个再PC端运行得好好的,一到手机端就卡住了,开局不顺。

    后来问了队友才知道要在c盘sysytem32文件夹的driver文件夹的host文件修改域名映射,终于connect上服务器了。不过,悲剧才刚刚开始,后来出现chat.addMessageListener(...)接收不到消息,阻塞不通,消息都监听不了那还怎么玩。上网查了很久,终于发现“还有”一个消息的方法。

 消息监听代码实现:

Java代码   收藏代码
  1. // 监听消息接收  
  2.         XmppConn.connection.addPacketListener(new PacketListener() {  
  3.   
  4.             public void processPacket(Packet packet) {  
  5.   
  6.                 Message message = (Message) packet;  
  7.   
  8.                 System.out.println("收到消息" + message.toXML());  
  9. },null);  

要问为什么addMessagelistener不管用,说实话,我也不知道,网上说这是asmack的一个bug。

 

好了有了这个方法,实现一对一聊天的基本功能就足够了。

OK,这个手机端不能这么锉吧,然后就添加多人聊天功能,也就是会议吧,这个网上资料多的是,基本都是下面的代码的样子:

Java代码   收藏代码
  1. MultiUserChat.addInvitationListener(connection,  
  2.         new InvitationListener() {  
  3.             public void invitationReceived(Connection conn,  
  4.                     String room, String inviter, String reason,  
  5.                     String password, Message message) {  
  6.                 MultiUserChat multiUserChat = new MultiUserChat(conn,  
  7.                         room);  
  8.                 System.out.println("收到来自 " + inviter  
  9.                         + " 的聊天室邀请。邀请附带内容:" + reason);  
  10.        }  
  11. }  

 原来我就是这么实现的,而且在PC端运行时畅通无阻啊,但是到了android这边,这个想法就太天真了,我发现程序直接把这段代码忽视了!!!思前想后无果,只能用addPacketListener的方式来搞了,直接导致的结果便是苦力~~自己写方法写函数来把接收到的信息解析出来,这里面的工作量不是一般的大。

    至今我还留着这个疑问:为什么许多监听都无效?而且真的是网上说的asmack的bug?为什么android不允许预读取asmack里面的一个叫META-INF里面的文件?

 

=========================

我跟你碰到同样的问题,一对一聊天接收不到信息。用你的方法目前貌似可行。但你的代码没贴全,还要加上  , null);   会议聊天接收功能我用的api一直没出问题,代码如下:muc = new MultiUserChat(Chatting.connection, roomName + "@conference." + hostIP);
// 创建聊天室,进入房间后的nickname
try {
muc.join(account);
} catch (XMPPException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
    ChatPacketListener chatListener = new ChatPacketListener(muc);
muc.addMessageListener(chatListener);

 

 

猜你喜欢

转载自coolwhy1.iteye.com/blog/1902973