我在Linode服务器上使用node.js和socket.io。我被告知我应该使用KeepAlives和我的应用程序来使用Linode NodeBalancer。我还被告知我必须将NodeBalancer协议设置为使用TCP而不是(HTTP或HTTPS都禁用KeepAlives)。
我的问题是,KeepAlives是否已在socket.io中默认实现?似乎有一些东西保持连接活着所以我认为这已经由socket.io处理。但是,我似乎无法找到有关此主题的任何信息。如果socket.io中默认没有实现KeepAlive,那么使用NodeBalancer会遇到什么问题?如果我应该实现KeepAlives,我需要在我的应用程序中采取哪些步骤来实现它们?
作为一个额外的问题,如果在socket.io中实现KeepAlive,如果我使用HTTP选项而不是TCP,我将面临哪些问题?
答案 0 :(得分:7)
是。你可以设置选项。
var myApp = require('express')();
var http = require('http').Server(myApp);
var io = require('socket.io')(http, {'pingTimeout': 7000, 'pingInterval': 3000});

答案 1 :(得分:3)
我的问题是,KeepAlives是否已经在socket.io中实现了 默认?
是的,一个ping
数据包(一个非常小的webSocket数据包)每隔一段时间就作为一个心跳发送到"测试"连接并确保它仍然可以正常运行并保持活动状态。 pong
请求返回ping
数据包,以便发件人知道ping
是否通过。
socket.io的这个ping方面记录很差,但通过检查socket.io使用的source code of engine.io,有pingTimeout
(等待{{1}多长时间}响应和pong
(发送pingInterval
的频率。)