我在一台计算机上使用带有Node JS的Einaros WS模块,当我使用另一台计算机连接时它可以正常工作.(server)(client)
如果我插上网线,ws.on('close', function()...它不会开火,我正在寻求建议是否:
我必须实现自己的ping/pong,或者
有一个内置功能可以自动处理.
Pra*_*era 16
Einaros WS确实能够发送大多数浏览器和套接字框架都能理解的Ping和Pong帧.我已经在iOS上测试了Socket Rocket,它对于Einaros的Ping帧没有任何问题.你必须提出应用程序特定的逻辑,用于ping的频率,以及你能容忍多少错过的pong.Einaros WS有ping()和pong()函数来发送ping或pongs.您收听"pong"事件以了解您何时收到客户的回复.以下是我在代码中执行此操作的方法:
wss.on("connection", function(ws) {
console.log("websocket connection open");
ws.pingssent = 0;
var interval = setInterval(function() {
if (ws.pingssent >= 2) {// how many missed pings you will tolerate before assuming connection broken.
ws.close();
} else {
ws.ping();
ws.pingssent++;
}
}, 75*1000);// 75 seconds between pings
ws.on("pong", function() { // we received a pong from the client.
ws.pingssent = 0; // reset ping counter.
});
});
Run Code Online (Sandbox Code Playgroud)
在Socket Rocket的情况下,客户端不需要代码.因此兼容的浏览器和客户端将自动响应Pongs.
| 归档时间: |
|
| 查看次数: |
4051 次 |
| 最近记录: |