创build一个侦听“net”stream并使用Node.js进行回复的服务器

有人能给我一个关于如何创build一个监听stream的服务器的工作示例,并在有请求经过时回复。

以下是我到目前为止:

var port = 4567, net = require('net'); var sockets = []; function receiveData(socket, data) { console.log(data); var dataToReplyWith = ' ... '; // ... HERE I need to reply somehow with something to the client that sent the initial data } function closeSocket(socket) { var i = sockets.indexOf(socket); if (i != -1) { sockets.splice(i, 1); } } var server = net.createServer(function (socket) { console.log('Connection ... '); sockets.push(socket); socket.setEncoding('utf8'); socket.on('data', function(data) { receiveData(socket, data); }) socket.on('end', function() { closeSocket(socket); }); }).listen(port); 

请问socket.write(dataToReplyWith); 这样做?

是的,你可以随时写入套接字(只要套接字仍然是可写的)。 然而,你可能遇到的问题是一个data事件可能并不意味着一个完整的“请求”。 由于TCP只是一个stream,你可以得到任何数量的数据,可能不符合你的协议消息边界。 因此,您可以在一个data事件上获得一半“请求”,然后在另一个data事件上获得另一半,或者相反:在单个data事件中获得多个“请求”。

如果这是您自己定制的客户端/服务器devise,并且您还没有适当的协议来确定“请求”/“响应”的界限,那么您现在应该将其合并。