Tag: timer

NodeJs:如何处理大量的定时器?

我正在使用socket.io通过websockets发送数据包。 他们似乎不时消失。 所以我必须实施某种确认制度。 我的想法是立即回应一个ACK包的数据包。 如果服务器在给定的时间内没有收到ACK包,他将重新发送(最多3次,然后断开套接字)。 我的第一个想法是发送一个包后启动一个定时器(setTimeout)。 如果发生超时事件,则必须重新发送数据包。 如果ACK将到达,超时将被删除。 非常简单和简短。 var io = require('socket.io').listen(80); // … connection handling … function sendData(someData, socket) { // TODO: Some kind of counter to stop after 3 tries. socket.emit("someEvent", someData); var timeout = setTimeout(function(){ sendData(someData, socket); }, 2000); socket.on("ack", function(){ // Everything went ok. clearTimeout(timeout); }); } 但是我会有1k-3k的客户端连接很多的stream量。 我无法想象,同时运行的10k个定时器可以被NodeJS使用。 更糟糕的是,我读到NodeJS不会在没有时间的情况下触发事件。 […]

清除计时器而不将其存储在nodejs中

有没有办法清除一个setTimeout而不是将其存储在一个variables,然后将其传递给clearTimeout ? 或者以某种方式使setTimeout返回一个ID而不是一个对象,我会传递给clearTimeout ?