现在的位置: 首页 > java > spark > 正文
spark openfire conference修改使群组编程持久的。 类似qq群(2)
2012年06月09日 spark ⁄ 共 1784字 暂无评论

 第四:客户端要进行处理,处理的是 ,客户端登陆的时候,要进行监听,如果客户端登陆了,进行addPacketListener

spark插件代码如下:

public class GroupChatPlugin implements Plugin,PacketListener {

 @Override
 public boolean canShutDown() {
  // TODO Auto-generated method stub
  return false;
 }

 @Override
 public void initialize() {
 
  SparkManager.getConnection().addPacketListener(this,new MessageTypeFilter(Message.Type.groupchat));
 
 }

 @Override
 public void shutdown() {
  // TODO Auto-generated method stub
  
 }

 @Override
 public void uninstall() {
  // TODO Auto-generated method stub
  
 }
 @Override
 public void processPacket(Packet message) {
System.out.println(message.toXML());
  String to=message.getFrom();
  String roomname=to.substring(0, to.indexOf("@"));
  String roomjid=to.substring(0, to.indexOf("/"));
  System.out.println("来消息了啊  roomname"+roomname+"  roomjid"+roomjid);
     try {
      ChatManager chatManager = SparkManager.getChatManager();
            GroupChatRoom chatRoom = (GroupChatRoom)chatManager.getChatContainer().getChatRoom(roomjid);
    
        
            return;
        }
        catch (ChatRoomNotFoundException e) {
         
        ConferenceUtils.joinConferenceOnSeperateThread(roomname, roomjid, null);
         System.out.println("ChatRoomNotFoundException");
        }
 }

}

 

主要作用就是监听packet 判断如果GroupChatRoom 没有的话,进行加入。

 

 

另外,spark默认的是客户如果关闭了聊天室,就会自动从群里退出。这个要处理服务端,客户端不需要处理,处理的是spark往openfire发送packet的时候,openfire捕获,但是不进行任何处理,这个要修改下面的代码

在openfire的localMUCuser 找到这两行代码 注释掉就可以

//        removeRole(group);
               //     role.getChatRoom().leaveRoom(role);

 

还是在localMUCUser这个类里面 找到    public void process(Presence packet)  这个方法 找到    role.getChatRoom().presenceUpdated(role, packet);  这行代码 然后再下面加入

      LocalMUCRoom room = (LocalMUCRoom) server.getChatRoom(group, packet.getFrom());
            room.sendInitialPresences((LocalMUCRole) role);// 给客户端进行会员更新

 

在写上面的两行代码之前 ,还要对localmucroom的sendInitialPresences 修改为public 不然不能引用

 

 

给我留言

您必须 [ 登录 ] 才能发表留言!

×