如何仅使用Net模块(不是socket.io)将消息发送到node.js中的单个客户端

简单的代码:

process.stdin.resume() process.stdin.setEncoding('utf8'); var server = createServer(); server.listen(9999); server.on('connection',function(sock){ console.log('CONNECTED:'+sock.remoteAddress+":"+sock.remotePort); process.stdin.on('data',function(send){ sock.write(send); }); } 
  • 当从10.10.10.1和10.10.10.2接收到连接时,在terminal上显示“CONNECTED:10.10.10.1:xxx”和“CONNECTED:10.10.10.2:xxx”

  • 发送消息给客户端,我用sock.write(发送)..但是,所有的客户端收到消息

  • 我如何发送消息给特定的客户端。 从谷歌search有很多socket.io相关的文件(解决scheme)..但是,在使用socket.io之前,我想知道node.js本身。 (或JavaScript本身?)

  • 在阅读Vadim的评论之后,我在下面写下了更多的代码。 完整的工作代码。

  • 我添加两件事。 根据Vadim的评论,添加属性sock.id和使用属性sock.remoteAddress,发送服务器的stdin消息
    10.10.10.1客户端


var net = require('net') process.stdin.resume() process.stdin.setEncoding('utf8'); var server = net.createServer(); server.listen(9999); server.on('connection',function(sock){ sock.write('input your ID: ',function(){ var setsockid = function(data){ id=data.toString().replace('\r\n',''); console.log('ID:'+id+' added!!') sock.id=id sock.removeListener('data',setsockid); }; sock.on('data',setsockid); sock.on('data',function(data){ d=data.toString().replace('\r\n',''); console.log(sock.id+' say: '+d); }); }); console.log('CONNECTED:'+sock.remoteAddress+":"+sock.remotePort); process.stdin.on('data',function(send){ if (sock.remoteAddress=='10.10.10.1') sock.write(send); }); });

回答你的问题是在Node.JS主页上 。

 var net = require('net'); var server = net.createServer(function (socket) { socket.write('Echo server\r\n'); socket.pipe(socket); }); server.listen(1337, '127.0.0.1');