canhaschat插件没有在接受消息时刷新最后使用时间。这样的话,如果客户端一直在等待消息,那么到达timeout就会退出,实际上客户端还是在连接的,这时候 chat_id已经失效了。
看上去应该在接受消息的时候刷新一下最后时间。
canhaschat/lib/can_has_chat/remote/chat_server.rb
line 150:
实际上就加了一句:
conn.refresh_age()
这样即使长期等待也不会退出了。
看上去应该在接受消息的时候刷新一下最后时间。
canhaschat/lib/can_has_chat/remote/chat_server.rb
line 150:
get_connection_for(options[:id]).synchronize_with do |conn|
conn.refresh_age()
sender_jid = get_user(options[:from], options[:transport]) if options[:from]
return conn.empty_queue_of_all_messages(sender_jid)
end
实际上就加了一句:
conn.refresh_age()
这样即使长期等待也不会退出了。
本文介绍了一个关于canhaschat插件的问题及解决方案。当插件在接收消息时未更新最后使用时间,导致客户端在等待消息过程中因超时而断开连接。通过在接收消息时调用refresh_age()方法来刷新最后使用时间,可以避免这一问题。
2900

被折叠的 条评论
为什么被折叠?



