当我多次进入聊天室时,让服务器不给我发送相同的消息?

Posted

技术标签:

【中文标题】当我多次进入聊天室时,让服务器不给我发送相同的消息?【英文标题】:Make the server not send me same messages when i enter a chat room many times? 【发布时间】:2014-02-21 07:28:34 【问题描述】:

如果我进入聊天室,我会收到一些消息。然后我退出我的帐户。当然,我也会退出聊天室。但是我下次进入同一个聊天室,我会收到相同的消息还有。我的意思是,当我多次进入聊天室时,服务器不应该向我发送相同的消息,服务器应该向我发送我从未收到过的消息。我该怎么办?? ejabberd.cfg 中有一个选项,"history_size",但是不符合我的需求。

【问题讨论】:

【参考方案1】:

Section 7.2.15 of XEP-0045 指定如何要求限制进入房间时收到的消息历史记录数量。重新进入房间时,您的客户可能会记下它收到的最后一条消息的时间戳,并要求仅在该时间之后获取消息:

<presence
    from='hag66@shakespeare.lit/pda'
    id='n13mt3l'
    to='coven@chat.shakespeare.lit/thirdwitch'>
  <x xmlns='http://jabber.org/protocol/muc'>
    <history since='1970-01-01T00:00:00Z'/>
  </x>
</presence>

【讨论】:

这似乎是个好主意,但客户端和服务器上的时间可能不同。客户端可以获取上次从服务器注销的时间吗?如果是这样,解决方案非常好。

以上是关于当我多次进入聊天室时,让服务器不给我发送相同的消息?的主要内容,如果未能解决你的问题,请参考以下文章

为啥我的消息显示多次?

从聊天中获取待处理消息

asmack 没有收到多用户聊天请求

为啥在使用 XMPP 时多次发送聊天时会出现“服务不可用”?

带有广播 = true 的 Flask SocketIO Emit 不会向发送者发送消息

将 redis 用于 pub-sub 时不需要的多条消息