Strophe.js服务器发送不可用状态,即使对于当前正在主动聊天的用户也是如此
Strophe.js server sends unavailable status even for users actively chatting at the moment
我最近遇到了Strophe应用程序的另一个问题.js:即使我正在与用户B积极聊天(根据规范发送正确的xml,包括
目前逻辑如下所示:
- 连接
- 发送初始状态节
- 需要时更新状态(离开/DND(
- 每 10 秒开始 ping 服务器一次
- 用户现在可以聊天
Pinging是为了确保服务器没有被压垮,它是众所周知的和广泛使用的技术(使用
用户发送的每条消息如下所示:
<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>
你知道这个问题和任何可能的解决方案吗?
这个问题可以通过使用Strophe.roster插件来解决。该问题与以下事实有关:当用户重新登录到服务器时,会创建新会话。一段时间后(据说是 60 年代(,旧会话过期,服务器广播用户已离开的信息。
该解决方案要求存储每个联系人登录时创建的资源,并在用户离开时将其删除。当且仅当没有更多资源时,可以假定用户处于脱机状态。
我还在 Strophe.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;
}
}
相关文章:
- 我可以'当用户更改页面时,我无法在Iframe中获取聊天内容
- 在聊天应用程序中显示联机用户
- Gmail 聊天如何在没有长轮询的情况下向用户发送数据
- 我该如何在允许用户导航到其他页面的同时,使用strophe保持聊天会话的打开
- 在xmpp多聊天中,管理员角色只授予创建房间的在线用户成员资格
- 检测用户是否已退出聊天
- 聊天应用程序 - 当有人进入/离开房间时,用声音通知用户
- Strophe.js服务器发送不可用状态,即使对于当前正在主动聊天的用户也是如此
- PhoneGap聊天应用程序用户可以看到其他人的消息
- 如何在JS socket.io聊天中处理异步用户数据
- SignalR用于跟踪在线用户和聊天
- Node.js/Sockets-用户连接,它加载以前的消息,但它将消息加载到所有其他聊天用户,而不是刚刚连接的用户
- 群聊网络聊天圈就像facebook的群聊用户界面
- Ajax用户键入聊天消息
- Node.js聊天服务器,当另一个用户发送数据时,客户端断开连接
- 向Google IM用户发送聊天
- 格式化用户在Javascript中发送的聊天消息
- 当用户导航到不同的页面时,facebook如何保持聊天窗口打开
- 套接字.为大量用户提供可靠的聊天服务器,如果是,您的堆栈是什么?
- 在聊天脚本中验证用户的存在