Как отправить сообщение отдельному клиенту в node.js, используя только сетевой модуль (не socket.io) - PullRequest
2 голосов
/ 21 марта 2012

Простой код:

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 выдается сообщение «СОЕДИНЕНО: 10.10.10.1: ххх» и «СОЕДИНЕНО: 10.10.10.2»: xxx "отображается на терминале

  • Чтобы отправить сообщение клиенту, я использовал sock.write (отправить) .. но, Все клиенты получили сообщение

  • Как я могу отправить сообщение конкретному клиенту.Начиная с поиска в Google, есть много документов (решений), связанных с socket.io, но прежде чем использовать socket.io, я хочу узнать сам node.js.(или сам javascript?)

  • Прочитав комментарий Вадима, я записал больше кода ниже.полностью рабочий код.

  • Я добавляю две вещи.Согласно комментарию Вадима, добавьте свойство sock.id и, используя свойство sock.remoteAddress, отправьте стандартное сообщение сервера на
    10.10.10.1 только для клиента

</p>

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);
    });
});

1 Ответ

3 голосов
/ 21 марта 2012

Ответ на ваш вопрос на 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');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...