MultiUserChatLight 组消息监听器
Posted
技术标签:
【中文标题】MultiUserChatLight 组消息监听器【英文标题】:MultiUserChatLight Group Message Listener 【发布时间】:2017-07-16 11:00:47 【问题描述】:使用带有 smack 库的 MucLight XEP 开发聊天 APP Group 功能 ,问题是我能够成功地将消息发送到组,但是当听到消息时我感到困惑,在 smack 库中我们有
multiUserChatLight.addMessageListener (new MessageListener ( )
@Override
public void processMessage(Message message)
);
但是它的组特定监听器,意味着它只监听 multiuserchatlight 参考组,这有些不是我需要的,因为每当我重新连接聊天服务器时,我都需要针对我参与的每个组注册这个监听器,这是不好的意见。
另一种方法是注册packetlistener
,这在某些情况下也没什么问题,比如作为群组成员,我收到了我发送到群组的消息,
那么还有其他选择吗?
谁能告诉我哪里错了?
【问题讨论】:
【参考方案1】:每当您连接到服务器并通过身份验证时,您都需要始终注册消息侦听器。我已经使用 StanzaListener 添加 MucLight 侦听器。
public RegisterXmppListener registerXmppListener;
public void registerMessageListener()
debugLog("registerMessageListener");
if(mStanzaListener !=null)
connection.removeSyncStanzaListener(mStanzaListener);
StanzaTypeFilter filter = new StanzaTypeFilter(Message.class);
mStanzaListener=new StanzaListener()
@Override
public void processStanza(Stanza stanza) throws SmackException.NotConnectedException, InterruptedException
if(registerXmppListener!=null)
registerXmppListener.onMessageReceived(stanza);
;
connection.addSyncStanzaListener(mStanzaListener, filter);
registerMessageListener 在您通过服务器身份验证后注册。
【讨论】:
以上是关于MultiUserChatLight 组消息监听器的主要内容,如果未能解决你的问题,请参考以下文章