首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >XMPP Smack Chat应用中的多设备支持

XMPP Smack Chat应用中的多设备支持
EN

Stack Overflow用户
提问于 2015-07-20 11:16:28
回答 3查看 1.2K关注 0票数 2

我正在开发Android聊天应用程序。

我的要求是向多个设备传递消息。

考虑两个用户(用户A和用户B)之间的这种情况:

代码语言:javascript
运行
复制
User A logs in and sends message to User B.
User B logs in from Device 1 and receives message from User A.
User B logs in from Device 2 but does not get message from User A.

根据我的要求,用户B也应该从设备2中的用户A获得消息。

我怎样才能做到这一点?

谢谢。

EN

Stack Overflow用户

发布于 2018-08-23 05:44:56

为了参与即时消息传递和存在活动,客户端(即设备)应该在服务器上建立会话。

XMPP文档中所示

如果已经有同名的活动资源,服务器必须(1)终止活动资源并允许新请求的会话,或者(2)不允许新请求的会话并维护活动资源。这些服务器中的哪一个取决于实现,尽管建议实现case #1。在案例1中,服务器应该向活动资源发送流错误,终止XML流和活动资源的底层TCP连接,并向新请求的会话返回类型为“resource”(表示成功)的IQ节。在第二种情况下,服务器应该向新请求的会话发送一个节错误,但是维护该连接的XML流,以便新请求的会话在发送另一个会话请求之前有机会协商一个不冲突的资源标识符。

(https://www.rfc-editor.org/rfc/rfc6120#section-7.7.2.2)

因此,您应该根据应用程序的要求,首先决定处理会话的方式。现在,由于您使用的是Ejabberd,所以可以通过定义选项资源来配置它。

但是,如果仍然希望使用多个会话,则可以使用Management XEP-0313

这样您就可以在服务器上存储聊天历史记录,然后检索。这可以通过使用选项国防部在ejabberd中进行配置。

票数 0
EN
查看全部 3 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31515088

复制
相关文章

相似问题

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