gpt4 book ai didi

javascript - Strope.js 服务器即使对于当前正在聊天的用户也会发送不可用状态

转载 作者:行者123 更新时间:2023-11-28 09:52:46 26 4
gpt4 key购买 nike

我最近遇到了 Strope.js 应用程序的另一个问题:尽管我正在积极与用户 B 聊天(根据规范发送正确的 xml,包括 和其他内容) 服务器会通知用户 B我变得无法联系

目前逻辑如下:

  • 连接
  • 发送初始存在节
  • 在需要时更新状态(离开/免打扰)
  • 每 10 秒启动一次 ping 服务器
  • 用户现在可以聊天

执行 Ping 是为了确保服务器不会崩溃,这是众所周知且广泛使用的技术(使用 )。

用户发送的每条消息如下所示:

<message from="me@server.ltd" to="friend@server.ltd" type="chat" id="randomID" xmlns="jabber:client">
<active xmlns="http://jabber.org/protocol/chatstates" />
<body>Text</body>
</message>

您知道这个问题以及任何可能的解决方案吗?

最佳答案

这个问题可以通过使用 Strope.roster 插件来解决。该问题与当用户重新登录服务器时创建新 session 这一事实有关。一段时间后(据说是 60 秒),旧 session 过期,服务器广播用户已离开的信息。

该解决方案需要存储每个联系人登录时创建的资源,并在用户离开时删除它们。当且仅当没有更多资源时,才可以假定用户处于离线状态。

我还向 Strope.roster 添加了新功能,例如:

isOnline: function (jid) {
var item = this.findItem(jid);
if (!item || !item.resources) {
return false;
} else {
for (var k in item.resources) {
return true;
}
return false;
}
}

关于javascript - Strope.js 服务器即使对于当前正在聊天的用户也会发送不可用状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10633919/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com