我一直在套接字上使用Node.js的setTimoeut,但我并不认为它真的按照我的意愿去做。我希望它能够在服务器有 no response 时超时套接字。因此,如果服务器没有向我发送数据或接受从我的端发送的任何数据,我希望它关闭套接字。
目前,我让客户发送了#No; NoOp"用于保持套接字打开的命令。当服务器不接收NoOp命令时,套接字将按预期关闭。但是,保持排队NoOp命令的客户端永远不会收到套接字超时事件。我猜测尝试发送数据计为套接字活动,无论服务器是否接受它。但是如果服务器暂时没有接受它,我希望它也算作超时。
如何根据是否收到数据来制作计时器?
我当前的套接字创建代码并没有做我真正想要的。
// Our timeout
socket.setTimeout( 60000 );
// Set his callbacks
socket
.on( 'data', this.dataReceived.bind( this ) )
.on( 'close', this.socketClosed.bind( this ) )
.on( 'error', this.socketError.bind( this ) )
.on( 'end', this.socketEnd.bind( this ) )
.on( 'timeout', this.socketTimeout.bind( this ) )
.on( 'drain', this.socketBufferDrain.bind( this ) );