【问题标题】:ejabberd behavior b/w user disconnected vs user unavailableejabberd 行为 b/w 用户已断开连接与用户不可用
【发布时间】:2015-05-14 04:27:02
【问题描述】:

意外断开互联网连接的用户的ejabbered行为是什么

明确发送“不可用”状态的用户?

他们是否都被视为离线(对于单用户聊天或 MUC)?

我想要一种行为,如果用户与互联网断开连接,则发送离线消息

如果用户发送了明确的不可用状态,我不希望发送离线消息。

如何实现?我可以写我的钩子。但是我需要知道在什么情况下会调用钩子。

【问题讨论】:

    标签: ejabberd xmppframework


    【解决方案1】:

    当用户下线时,无论使用哪种方法(显式会话关闭或非自愿断开连接),默认行为都是相同的。这是每个 XMPP 规范。

    如果您想自定义行为,这并不容易,因为无法知道用户离线的原因。 我会做什么:我会使用最后一个模块并支持一个可选的断开连接并存储它的原因。当您不自觉地断开连接时,我会修改代码以将原因存储为“超时”之类的东西。当您明确断开连接时,我会存储另一个标志。当您收到离线消息时,您可以从 mod_last 存储中检查离线原因。

    【讨论】:

    • 如果您终止客户端 - 是否可以保持会话活动,只需忽略 TCP 断开连接,而不是存在。 XEP - 0198 建议相同
    • 不是标准的,也不是永远的。例如,如果您必须重新启动 ejabberd 集群中的节点,所有会话都将关闭。
    • 正如我提到的:在客户的存在不可用标签中添加一个自定义原因字段。
    • 不清楚...但谢谢...我会考虑更多...因为如果非自愿断开连接...那么客户端不会发送出席信息节吗?或者当流/会话非自愿断开时,ejabbered 是否会向正在运行的模块发送状态
    • 当会话结束时,ejabberd 代码知道它,你可以在你的代码中采取相应的行动。
    猜你喜欢
    • 1970-01-01
    • 2013-06-29
    • 1970-01-01
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多