TCP Сеть с узлом js Сетевой модуль записывает каждый символ в сокет вместо слова |Сетевой модуль |NodeJs |Telnet в Windows - PullRequest
0 голосов
/ 02 марта 2019

Я собираюсь создать сервер чата с помощью сетевого модуля Node js и пытаюсь подключить сервер с помощью telnet (в оконной системе).Всякий раз, когда подключенный клиент вводит в сеанс telnet, каждый символ отображается в сокете другого клиента.

Ожидаемый вывод - ввод должен буферизироваться до следующего перехода на новую строку, поэтому, когда я нажимаю Enter, он должен передаваться другим подключенным клиентам.

Вот мой server.js

const server = require('net').createServer();
let counter = 0;
let sockets = {};
server.on('connection', socket => {
    socket.id = counter++;
    sockets[socket.id] = socket;
    console.log(`Client socket number ${socket.id} connected`); // This is for our confirmation.
    socket.write("Welcome new Client!"); // This is the client side confirmation.
    socket.on('data', data => {
        Object.entries(sockets).forEach(([id, cs]) => {
            if(id != socket.id){
                cs.write(`${socket.id}: ${data}`);
            }             
        })        
    })
    socket.on('end', () => {
        delete sockets[socket.id];
        console.log('Client disconnected.');
    })
})

server.listen(8000, () => console.log('Server Bound'));

From client side

Как вы можете видеть, когда клиент 1 типа «тестирует», он передает каждый отдельный символ другим подключенным клиентам вместо ожидания вводаперевод строки (или ввод).

А также дайте мне знать, как завершить текущий активированный сеанс telnet в Windows (использование командной строки, так как ctrl + c не работает).

...