我将移动客户端连接到node.js服务器,并通过xhr-polling运行socket.io。我有两种类型的客户:
当由于网络问题(或客户端崩溃)而导致连接中断时,默认的心跳超时时间过长
当此客户端的连接断开时,我需要给它更多的时间来恢复-与服务器断开连接/会话相比,客户端进行恢复更重要
所以我的问题是如何配置(如果可能)来自实际客户端的心跳超时?
据我所知,这里有2个重要的值:服务器每秒钟发送一次心跳到客户端heartbeat interval
;客户端直接响应,如果没有响应,则服务器确定客户端已死。heartbeat timeout
自上次心跳以来,客户端等待服务器的心跳数秒(显然应高于heartbeat interval
)。如果heartbeat timeout
几秒钟后仍未收到来自服务器的消息,则认为服务器已死(并将根据您设置的其他选项开始断开连接/重新连接。
默认值为heartbeat interval = 25s
和heartbeat timeout = 60s
。两项都在服务器上设置,heartbeat timeout
在连接时将其发送到客户端。
更改heartbeat timeout
单个客户端的值很容易:
var socket = io.connect(url);
socket.heartbeatTimeout = 20000; // reconnect if not received heartbeat for 20 seconds
但是,在服务器上,该heartbeat interval
值似乎是共享对象(Manager,这是您从var io = require("socket.io").listen(server)
调用中得到的)的一部分,这意味着无法轻松地为单个套接字更改它。
我敢肯定,通过一些socket.io黑客攻击,您应该能够实现这一目标,但是您可能会破坏该过程中的其他内容…
问题内容: 是否有适用于Java的Socket.IO客户端?到目前为止,我只找到了仅适用于JavaScript的官方Socket.IO客户端和仅作为服务器的socket.io- java。 问题答案: 目前的选项有限: http://code.google.com/p/weberknecht/ https://github.com/TooTallNate/Java-WebSocket https:
Socket.IO 的开源 iOS 客户端,使用 swift 编写。 演示视频:http://fat.gfycat.com/EssentialBlueElectriceel.webm 使用示例: import Foundationlet socket = SocketIOClient(socketURL: "localhost:8880")socket.on("important message"
在文档的socket.io客户端套接字部分http://socket.io/docs/client-api/#io#socket指的是套接字文档,这意味着服务器套接字对象和客户端套接字对象是相同的。
问题内容: 据我所知,对于如果不用作Web服务器的客户端脚本,我们没有任何解释。我已经找到了客户端文件的完整目录,但是我需要它们的组合版本(例如,使用node.js网站服务器时就可以使用)。有任何想法吗? 问题答案: socket.io.js是您要放入客户端html中的内容。就像是: 我的脚本位于: 将该文件复制到您希望服务器提供该文件的位置。
问题内容: 谁能推荐适用于Python的Socket.IO客户端库?我环顾四周,但是我只能找到服务器实现或依赖于Twisted之类的框架。 我需要一个不依赖于其他框架的客户端库。 仅使用多种连接类型之一是不够的,因为python客户端将需要与多个socketio服务器一起工作,例如,其中许多都不支持websocket。 问题答案: Archie1986的回答很好,但是套接字更新(已更具体地讲,其协
我对gRpc很陌生,已经开始探索它们的基础知识(在C语言中)。我想获得有关如何发送心跳以检查客户端/服务器是否仍处于连接状态以及在断开连接时采取恢复措施的指导。任何示例或参考任何文档/文章都将有助于我开始学习。谢谢