node.js中的chatserver基本错误

node.js中的chatserver基本错误,node.js,chat,Node.js,Chat,您好,我正在node.js上运行chatserver的基本代码。这几乎是从书的节点:启动并运行。问题是,当客户机键入消息时,其消息在每次击键时传输,而不是在完成一行并按enter键后传输,从而产生如下输出- 客户1:(发送)你好 客户2:(接收)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 但它应该是这样来的 客户2:(接收)127.0.0.1:50672>你好

您好,我正在node.js上运行chatserver的基本代码。这几乎是从书的节点:启动并运行。问题是,当客户机键入消息时,其消息在每次击键时传输,而不是在完成一行并按enter键后传输,从而产生如下输出- 客户1:(发送)你好 客户2:(接收)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

但它应该是这样来的 客户2:(接收)127.0.0.1:50672>你好

这里发生的事情是,消息在每次击键时传输,而不是在按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);
var net=require('net');
var chatServer=net.createServer(),
clientlist=[];
chatServer.on('connection',函数(客户端){
client.name=client.remoteAddress+':'+client.remotePort;
client.write('Welcome'+client.name+'!\n');
clientlist.push(客户端);
client.on('data',函数(data){
广播(数据、客户端);
});
});
功能广播(消息、客户端){

对于(var i=0;i服务器事件
data
在每次接收到数据块时都会触发。它可能会针对来自客户端的每个字符触发


解决方案是在服务器的
连接
回调中创建一个缓冲区字符串/数组。
数据
回调将接收到的数据添加到该缓冲区。当数据包含换行符时,缓冲区将被广播并清空。

包括您的客户端javascript。我怀疑您的问题是您正在传输每次按键后,您可能只想在用户点击enter(e.keyCode==13)后返回节点服务器好的,客户端只是普通的旧windows命令提示符,首先我使用telnet localhost 9000进行连接。然后我只是键入!我从一个命令提示符执行此操作以添加一个客户端。嘿,谢谢,这解决了问题。我想知道没有此命令提示符,书本示例如何工作。可能这本书使用的是unix shell,而不是windows提示符。可以吗你可能会接受(并投票?)答案?