【问题标题】:setting a timeout for every new socket node.js为每个新套接字 node.js 设置超时
【发布时间】:2014-01-30 08:52:48
【问题描述】:

当我依赖 net module 构建自己的 http 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 消息,它不会调用 my :

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

【问题讨论】:

    标签: javascript node.js sockets timeout


    【解决方案1】:

    作为回调传递给 socket.setTimeout 的是server.timeoutCallBack()result,即undefined。不是在那条线路之后 2 分钟调用 timeoutCallBack,而是在那条线路上调用它,然后 setTimeout 什么都没有。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2012-04-20
      • 2017-10-19
      • 2012-11-12
      • 2020-07-16
      • 2020-09-02
      • 2010-11-28
      相关资源
      最近更新 更多