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

标签 javascript node.js sockets timeout

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

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) {
            });

最佳答案

您作为回调传递给 socket.setTimeout 的内容是 server.timeoutCallBack()结果,它是未定义。您没有在该行之后 2 分钟调用 timeoutCallBack,而是在该行上调用了它,并且 setTimeout 什么也没调用。

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

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

关于javascript - 为每个新套接字设置超时node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21060306/

相关文章:

javascript - 添加链接到按钮 Javascript

node.js - 亚马逊 Alexa 调试

IOS 8.0.2 在套接字关闭时不发送 TCP FIN

javascript - Socket.io 使用参数创建空间

apache-flex - 在 Flex 中通过二进制套接字发送字符零 "\0"

Java 通过套接字发送数据 - 为什么我需要在字符串末尾放置一个换行符?

javascript - 为什么在 reactjs 组件方法中未定义

javascript - 事情是如何传递给 onClick 函数的

javascript - 是否可以将 Proxy 与 native 浏览器对象(HTMLElement、Canvas2DRenderingContext 等)一起使用?

javascript - Node.js 错误,包括 js 文件 - 找不到文件