我知道,如果我使用Java的BufferedReader.readLine(),一旦readLine()== null,我就可以到达流的末尾,这将使我的套接字无法用于进一步的读取,并且我将不得不创建另一个收到下一个答复。
假设我每10秒向服务器发送一条消息。
如果最近60秒钟内没有任何操作,服务器将关闭连接。
Node.js中的这段代码如何连续工作并且永不停止接收响应:
var client = new net.Socket();
function sendMsg()
{
client.write(msg);
console.log('Write:\n' + msg);
}
client.connect(PORT, HOST, function() {
console.log('TCP: ' + HOST + ':' + PORT + '\n' + msg + '\n');
setInterval(sendMsg, 10000);
});
client.on('data', function(data) {
console.log('Received:\n' + data);
});
client.on('close', function() {
console.log('Connection closed');
});
我已经在Node.js documentation中读到,套接字需要接收FIN包才能发出关闭流的'end'事件。
所以用两个词:
我是否正确地认为这两者在态度上并不具有可比性,或者是否有任何方法可以在Java中实现类似的功能?
目前,我在遇到特定词组时停止阅读信息流,并在我确定以后还有更多阅读内容时继续阅读。它现在可以使用,但是我知道这是一个丑陋的hack,而且很容易出错。