我正在开发Android聊天应用程序。
我的要求是向多个设备传递消息。
考虑两个用户(用户A和用户B)之间的这种情况:
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获得消息。
我怎样才能做到这一点?
谢谢。
发布于 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中进行配置。
https://stackoverflow.com/questions/31515088
复制相似问题