首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Smack:连接的用户总是出现脱机。

Smack:连接的用户总是出现脱机。
EN

Stack Overflow用户
提问于 2018-05-31 02:55:41
回答 1查看 482关注 0票数 0

我正在玩来创建一个简单的聊天客户端。我使用ejabberd作为本地XMPP服务器。基本原理似乎运作得很好:我可以连接、接收和发送消息。在测试中,我使用Gajim/PSI作为现成的XMPP客户端。

我唯一的问题是,在Gajim和PSI中,Android用户总是被列为脱机用户。由于交换消息有效,因此Android用户显然是连接的,ejabberd Web管理界面将两个用户都列出为已连接。

在我的Andoird代码中,在连接和登录之后,我发送了如下所示的存在节:

代码语言:javascript
复制
...
stanza = new Presence(Presence.Type.available);
stanza.setStatus("online");
this.mConnection.sendStanza(stanza);
...

我看到ejabberd中使用的是实时模式。我想这会告诉Gajim/PSI用户是在线的。还是要求Android用户首先需要将Gajim/PIS用户显式地添加到其名册中?我现在没那么做。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-06-06 06:57:56

对于在xmpp中工作的存在状态,两个用户都应该相互订阅。

在发送方:

代码语言:javascript
复制
Presence presence = new Presence(Presence.Type.subscribe);
presence.setTo(receiverJid);
connection.sendPacket(presence);

在接收方:

代码语言:javascript
复制
Presence subscribed = new Presence(Presence.Type.subscribed);
subscribed.setTo(senderJid);
connection.sendPacket(subscribed);

对两个用户都重复上面的内容。它们应该是相互签署的。如果您为一个用户执行此操作,它将无法运行

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50615977

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档