为每个新的套接字node.js设置超时

时间:2014-01-11 08:40:12

标签: javascript node.js sockets timeout

当我依靠http module构建自己的net module时,我想为每个新套接字设置超时。 我建立了以下内容:

server = net.createServer(function (socket) {
          if(server.timeout==null){
                server.timeout=120000;
                if(server.timeoutCallBack==null){
                    server.timeoutCallBack=function(){socket.destroy();};
                }
            }
          socket.setTimeout(server.timeout,server.timeoutCallBack());

因此,如果我的服务器的用户设置了新的超时持续时间,它将使用它。如果没有,它的默认值为2分钟。

我的问题是我的服务器不提供第一个连接,只是第二个连接。我的意思是,对于它获得的第一条http消息,它不会调用我的:

            socket.on("data", function (data) {
            });

1 个答案:

答案 0 :(得分:4)

作为回调传递给socket.setTimeout的是server.timeoutCallBack()结果,即undefined。不是在该行之后2分钟调用timeoutCallBack,而是在该行上调用它并且setTimeout什么都没有。

您应该将对函数的引用传递给setTimeout而不是:

socket.setTimeout(server.timeout,server.timeoutCallBack);