Простой код:Как отправить сообщение для индивидуального клиента в Node.js, используя только Net модуль (не Socket.io)
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, сообщение "CONNECTED: 10.10.10.1: ххх" и "CONNECTED: 10.10.10.2: ххх" являются дисплей на терминал
чтобы отправить сообщение клиенту, я sock.write (отправка) .. но, Все клиенты получили сообщение
- Как отправить сообщение конкретному клиенту. Из поиска в google есть много документов, связанных с socket.io (решения) .. , но перед использованием socket.io, я хочу знать node.js. (или сам JavaScript?)
После прочтения комментария Вадима, я записал больше кода ниже. полностью рабочий код.
Я добавляю две вещи. По комментарий Вадима, добавьте свойство 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);
});
});
Спасибо за ваше редактирование ... Написание кода, как указано выше, было для меня немного сложным, потому что это был мой первый пост – ryuken73