Ejabberd消息被多次发送

时间:2017-07-27 06:48:22

标签: xml xmpp ejabberd instant-message

我最近使用Ejabberd开发了一个即时消息网站,似乎有些消息正在发送两次。以下是具体情况。

  1. 用户A向用户B发送了多条消息,格式为:

    <body rid='1874291086' xmlns='http://jabber.org/protocol/httpbind' sid='33549457dc8ad98caceedbb648178f26683fcf8a'>
      <message to='284@ejabberd' from='282@ejabberd' type='chat' xmlns='jabber:client' id='efdf6155-a661-46eb-9b54-88b2790f492a'>
      <body>1</body>
      <data timestamp='1501136608657'/>
      <request xmlns='urn:xmpp:receipts'/></message>
    </body>
    
  2. 当B收到消息时,返回:

    <body xmlns='http://jabber.org/protocol/httpbind'>
      <message xmlns='jabber:client' xml:lang='en' to='282@ejabberd/9495456281346940375146' from='284@ejabberd/12680356801999428401210' id='5b1d7c22-381c-4332-a4c9-bc9443a9d296'>
      <received xmlns='urn:xmpp:receipts' id='efdf6155-a661-46eb-9b54-88b2790f492a'/>
      </message>
    </body>
    
  3. 几分钟后,任何一位客户都会收到:

    <body xmlns='http://jabber.org/protocol/httpbind'>
      <presence xmlns='jabber:client' to='282@ejabberd/13236655690203912299484' from='282@ejabberd/964025387189976270180' type='unavailable'>
        <status xml:lang='en'>Connection failed: connection closed</status>
      </presence>
    </body>
    
  4. 收到上述消息的客户端将发送ping

    <body rid='872290555' xmlns='http://jabber.org/protocol/httpbind' sid='cc0604ed5e728d88216c3bb9124fc39ed574cf5b'/>
    
  5. 该客户端将再次收到之前发送给它的所有消息

    <body xmlns='http://jabber.org/protocol/httpbind'><message xmlns='jabber:client' xml:lang='en' to='282@ejabberd/13236655690203912299484' from='284@ejabberd/17094073157455939286404' type='chat'>
      <composing xmlns='http://jabber.org/protocol/chatstates'/></message>
      ... all the messages ...
    </body>
    
  6. 我正在使用Strophe和Ejabberd 17.04,从5280端口连接到http-bind,并禁用mod_mam和mod_muc。我确实有Ejabberd的日志,但它很大,我可以提供必要的日志。

    每次客户端丢失连接时都会重新发送消息,并且将再次传递发送给用户的每条消息。

    我有几天烦人的问题,任何建议将不胜感激。谢谢您的时间:))

0 个答案:

没有答案