Привет, я запускаю базовый код для чат-сервера на node.js. Это почти снято с книги - «Узел: вверх и бег». Проблема заключается в том, когда клиент набирает сообщение, его сообщение передается при каждом нажатии клавиши, после завершения всей строки и нажатия клавиши ввода, в результате чего получается такой вывод: client1: (Отправляет) Hello Клиент2: (получает) 127.0. 0,1: 50672> ч 127.0.0.1:50672>e 127.0.0.1:50672>l 127.0.0.1:50672>l 127.0.0.1:50672>ochatserver in node.js Основная ошибка
Но это, как он должен прийти Client2: (Recieves) 127.0.0.1:50672>hello
Что происходит здесь, сообщения передаются при каждом нажатии клавиши, чем после нажатия клавиши enter. Я поднял еще один пример кода от git кем-то, и то же самое произошло! Вот мой код:
var net = require ('net');
var chatServer = net.createServer(),
clientlist =[];
chatServer.on('connection',function(client){
client.name = client.remoteAddress+':'+client.remotePort;
client.write('Welcome '+ client.name + '!\n');
clientlist.push(client);
client.on('data',function(data){
broadcast(data,client);
});
});
function broadcast(message, client){
for(var i=0;i<clientlist.length;i+=1){
if(client !== clientlist[i]){
clientlist[i].write(client.name + ":"+ message);
}
}
}
console.log("Chatserver Started")
chatServer.listen(9000);
Вот пример GitHub, которые дали одинаковые результаты: GITHUB Как исправить это поведение?
Включите ваш клиентский javascript. Я подозреваю, что ваша проблема заключается в том, что вы передаете обратно на ваш Node-сервер после каждого нажатия клавиши, когда вы, вероятно, хотите, чтобы после того, как пользователь нажал enter (e.keyCode == 13) –
, клиент просто обычная старая команда Windows , сначала я подключаюсь с помощью telnet localhost 9000. Тогда я просто набираю! Я делаю это из еще одной командной строки, чтобы добавить еще одного клиента. –