开始学习node的TCP服务器了,有点小疑问。
发布于 11 年前 作者 384324085 4326 次浏览 最后一次编辑是 8 年前

老规矩,先学习书上的代码


// JavaScript Document

var net = require(‘net’);//加载net模块包含了node需要的所有TCP功能

var chatServer = net.createServer();//创建一个新的服务器

var clientList = [];//定义一个存放多个用户的容器

chatServer.on(‘connection’,function(client){//调用on方法添加一个事件监听器 /* 连接事件在调用回调函数时,会传给我们新客户端所对应的TCP socket对象的引用,就是client */ client.write(‘Welcome To ChatRoom’);//通过client,可以将信息发送给客户端

client.name = client.remoteAddress + ':' + client.remotePort;
client.write('Hi' + client.name + '!\n');
//client.write('World');//同上
//client.end();//关闭连接
clientList.push(client);//将登入的用户推入容器中
client.on('data',function(data){//监听client,如果发现client发送数据给服务器时,这一事件就会被触发
	//console.log(data);
	broadcast(data,client);
	});
});

function broadcast(message,client){ for(var i=0,length = clientList.length;i<length;i++){//遍历容器中所有的用户 if(client !== clientList[i]){//如果不是发信用户,则信息可见,即即自己发信,让别人看到,自己不需要再次显示 clientList[i].write(client.name + ‘says:’ + message); } } } chatServer.listen(9000);//让node知道是监听哪个端口 console.log(‘服务器启动成功’);

我尝试开了多个客户端,问题是,为啥我的用户间传输信息是一个字符一个字符的显示。如何将一段字符串打好后,再进行传输?

5 回复

能上传一下客户端的代码吗?

客户端是如何send的~感觉是对端send的问题。

没有客户端代码,启动后,直接开两个终端进行通信

貌似是因为你把write方法放到for循环内部了?

用socket.io和socket.io-client更好实现类似的东西吧 除非你是要学习socket编程

回到顶部