代码之家  ›  专栏  ›  技术社区  ›  Alfred

xmpp组件:只有jid在线时才发送消息

  •  2
  • Alfred  · 技术社区  · 15 年前

    http://xmppjs.prosody.im/ . 我想给jid发送消息,但前提是用户在线。最快/最有效的方法是什么。

    我想检测这一点,例如,我可以发送电子邮件时,用户脱机。

    1 回复  |  直到 15 年前
        1
  •  4
  •   Joe Hildebrand    15 年前

    无论JID是否在线,都要发送消息,类型为“headline”。如果收件人处于脱机状态,则不应存储标题邮件以供以后传递。

    这种方法比你能做的任何事情都要快得多,也更便于携带。

    如果你 必须 根据用户是否在线执行不同的操作,您需要订阅该用户的状态:

    <presence type='subscribe' from='my.component' to='user@domain'/>
    

    用户必须接受您的请求:

    <presence type='subscribed' to='my.component' from='user@domain'/>
    

    用户还可以订阅回您的组件:

    <presence type='subscribe' to='my.component' from='user@domain'/>
    

    你可以用这些做你选择的事;最简单的方法就是接受它们:

    <presence type='subscribe'来自我的组件'到''用户@域'/>
    

    <presence type='probe' from='my.component' to='user@domain'/>
    

    然后,您将恢复每个用户资源的状态。没办法知道你什么时候做完。如果要在用户脱机时执行操作,只需选择一个超时值,然后在收到状态信息时停止计时器。由于用户是离线的,额外的延迟通常不是什么大问题。

    请注意,如果您接受上述用户的状态订阅,您将从该用户处获得探测;您可以忽略它们,也可以使用描述您的操作状态的状态节进行响应。