我将使用Node js的Net模块创建一个聊天服务器,并且尝试将服务器与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'));
您可以看到,当客户端1键入“ test”时,它会将每个字符回显到其他连接的客户端,而不用等待输入换行符(或回车)。
还要让我知道如何结束Windows上当前激活的telnet会话(由于ctrl + c不起作用,请使用命令提示符)。