Erlang 如何找回丢失的<;信息>;Ejabberd/MongooseIM中与XEP-0022相关的事件
我正在将MongooseIM与XEP-0022Erlang 如何找回丢失的<;信息>;Ejabberd/MongooseIM中与XEP-0022相关的事件,erlang,xmpp,chat,ejabberd,mongoose-im,Erlang,Xmpp,Chat,Ejabberd,Mongoose Im,我正在将MongooseIM与XEP-0022事件一起使用,如、、、,以确认消息传递等。我对和的工作感到满意,但对其他两个有一些困难 如果两个用户(聊天)都在线,那么一切都很好。但如果考虑以下用例: 假设第二个用户脱机,第一个用户联机,发送所有4个事件的,然后脱机 然后第二个用户联机(记住,第一个用户现在脱机),该用户收到,作为回报,他发送和事件,现在第二个用户进入脱机阶段 当第一个用户再次联机时,他没有收到任何和事件 简言之,两者都需要同时在线才能发挥作用。因此,我关注的是: 我如何才能确保信
首先,XEP-0022已被淘汰。最好遵循XSF建议——它是标准化XMPP的基础,并使用更现代的XEPS解决这个问题。也就是说,我将使用
类通知和
或
收据
我如何才能确保信息传递并显示给第二个用户,而不必同时在线
您应该使用MongooseIM(或ejabberd)实现的。它将聊天历史记录保存在服务器的数据库中,允许您随时获取过去的对话,而聊天伙伴不再在线
默认情况下,mod_mam不存储不包含文本的消息(准确地说,没有或空的
子元素),但它是可配置的,为了存储XEP-333聊天标记,您必须重新配置它。存储XEP-85通知可能没有意义,因为它们只有在两个用户都在线时才有意义
一旦您能够获取聊天标记,客户端应用程序就必须查询消息存档,处理结果,并找到与当前脱机用户的消息相对应的任何聊天标记。请记住,虽然从在线用户发送的常规标记看起来像这样(来自XEP-333的示例4):
这样
northumberland@shakespeare.lit
知道kingrichard@royalty.england.lit
已收到
,即使kingrichard@royalty.england.lit
目前处于脱机状态。首先,XEP-0022已被淘汰。最好遵循XSF建议——它是标准化XMPP的基础,并使用更现代的XEPS解决这个问题。也就是说,我将使用
类通知和
或
收据
我如何才能确保信息传递并显示给第二个用户,而不必同时在线
您应该使用MongooseIM(或ejabberd)实现的。它将聊天历史记录保存在服务器的数据库中,允许您随时获取过去的对话,而聊天伙伴不再在线
默认情况下,mod_mam不存储不包含文本的消息(准确地说,没有或空的
子元素),但它是可配置的,为了存储XEP-333聊天标记,您必须重新配置它。存储XEP-85通知可能没有意义,因为它们只有在两个用户都在线时才有意义
一旦您能够获取聊天标记,客户端应用程序就必须查询消息存档,处理结果,并找到与当前脱机用户的消息相对应的任何聊天标记。请记住,虽然从在线用户发送的常规标记看起来像这样(来自XEP-333的示例4):
这样
northumberland@shakespeare.lit
知道kingrichard@royalty.england.lit
已收到
,即使kingrichard@royalty.england.lit
当前处于脱机状态。您所说的FCM是什么意思?好的,我假设您指的是Firebase云消息。是的,Firebase Cloud Messagin我找到的最后一个解决方案是,我将使用普通<message from='kingrichard@royalty.england.lit/throne'
id='message-2'
to='northumberland@shakespeare.lit/westminster'>
<thread>sleeping</thread>
<received xmlns='urn:xmpp:chat-markers:0' id='message-1'/>
</message>
<message id='aeb213'
from='northumberland@shakespeare.lit'
to='northumberland@shakespeare.lit/westminster'>
<result xmlns='urn:xmpp:mam:2' queryid='f27' id='28482-98726-73623'>
<forwarded xmlns='urn:xmpp:forward:0'>
<delay xmlns='urn:xmpp:delay' stamp='2010-07-10T23:08:25Z'/>
<message from='kingrichard@royalty.england.lit/throne'
id='message-2'
to='northumberland@shakespeare.lit/westminster'>
<thread>sleeping</thread>
<received xmlns='urn:xmpp:chat-markers:0' id='message-1'/>
</message>
</forwarded>
</result>
</message>