封面

使用nodejs搭建一个简易的即时聊天软件

最近在学习node,跟着书上的例子写的一个基于net模块的tcp服务器,感觉挺有意思在此分享一下。

一、搭建简易的服务器

vim server.js

//引入node的net模块
var net = require('net')
//创建一个服务器
var chatServer = net.createServer();
//定义一个客户端列表
var clientList = [];
//监听连接...
chatServer.on('connection', function(client) {
//给客户端反馈
client.name = client.remoteAddress+':'+client.remotePort;
client.write('Hi!'+client.name+',您己成功连接服务器,可以正常通讯了..\n');
console.log(client.name+'加入了聊天...')
//将客户端放到客户端列表中
clientList.push(client);
//监听客户端信信息并给出反馈
client.on('data', function(data) {
// 把数据发送给所有客户端
broadcast(data,client);
});

//监听离线事件
client.on('end',function(){
console.log(client.name+'quit...')
clientList.splice(clientList.indexOf(client),1);
client.write('用户:'+client.name+'退出了当前服务\n');
})
//监听错误事件
client.on('error',function(e){
console.log(e);
})

})
/**
* 广播消息
**/
function broadcast(message,client){
var cleanUp=[];
for(var i=0;i<clientList.length;i++) {
if(clientList[i]!==client[i]){
if(clientList[i].writable){
clientList[i].write(client.name+'说:'+message);
} else{
cleanUp.push(clientList[i]);
clientList[i].destroy();
}
}
}
//在写入循环中删除死节点,消除垃圾索引
for(var i =0;i<cleanUp.length;i++){
clientList.splice(clientList.indexOf(cleanUp[i],i));
}
}

开启服务器
node server.js
chatServer is running at port 9000...
此时服务己经成功开启

二、客户端连接

格式: telnet host port
例如我在本地再开启一个shell窗口
telnet localhost 9000
Hi!127.0.0.1:43358,您己成功连接服务器,可以正常通讯了..

三、测试效果

1. 开启服务器

2. 客户端连接

3. 测试通讯

下面是gif效果图
tcp在线聊天服务器

文章目录
  1. 1. 一、搭建简易的服务器
  2. 2. 二、客户端连接
  3. 3. 三、测试效果
    1. 3.1. 1. 开启服务器
    2. 3.2. 2. 客户端连接
    3. 3.3. 3. 测试通讯


twitter分享


如果想及时收到回复,可在 订阅中心Participating中勾选Email

Fork me on GitHub