您好,我正在 node.js 上运行聊天服务器的基本代码。这几乎是从书中摘录的 - Node:Up and Running。问题是当客户端键入消息时,他的消息在每次击键时传输,而不是在完整的行并按 Enter 后,导致输出如下 - client1: (Sends) Hello Client2: (Recieves)127.0.0.1:50672> h 127.0.0.1:50672>e 127.0.0.1:50672>l 127.0.0.1:50672>l 127.0.0.1:50672>o
但这就是它应该如何来 Client2: (Recieves) 127.0.0.1:50672>hello
这里发生的是消息在每次击键时传输,而不是在按下回车后。我从某个人的 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 示例 :