Node+Socket实现聊天室

NodeJs的net模块提供了Socket接口,可用来构建聊天室,下面我们来一下如何实现这一功能的,分为客户端和服务端

一、服务端

var net = require("net");//引入node的net模块
var chatServer = net.createServer();//创建服务器实例
chatServer.listen(8000);//监听端口
var clientMap = new Object();//用来保存客户端的信息
var  i = 0;//连接用户的流水号(代替客户端的名字)
//当客户端连接上时触发connection事件
chatServer.on("connection",(client)=>{
console.log("客官,您来啦!");
client.name = ++i;//名字
    clientMap[client.name] = client;

//对客户端发送消息的一个监听
client.on("data",(data)=>{
console.log("有人说:" + data);
//广播
broadcast(data,client);
});
//error
client.on("error",(event)=>{
console.log("eroor is:" + event);
//结束
client.end();
});

//客户端关闭
client.on("close",(data)=>{
//删除
delete clientMap[client.name];
console.log(client.name + "下线啦");
//告诉所有的用户,某某下线啦
broadcast(client.name + "下线啦",client);
});
})

//广播机制-----android
function broadcast(msg,client){
for(var i in clientMap){
clientMap[i].write(client.name + "say:" + msg +"\n");
}
}
二、客户端
var net = require("net");

var host = "127.0.0.1";
var port = 8000;

//创建一个socket
var client = new net.Socket();
//设置字符编码
client.setEncoding = "utf-8";

//连接服务器
client.connect(port,host,()=>{
client.write("您好");
});
// 为客户端添加“data”事件处理函数
// data是服务器发回的数据
client.on("data",(data)=>{
console.log("服务器传来了:" + data);
//继续发送消息
sendMsg();
});

//加载dos窗口输入模块
var readline = require("readline");

var r1 = readline.createInterface({
input:process.stdin,
output:process.stdout
})

function sendMsg(){
r1.question("请输入:",(inputStr)=>{
client.write(inputStr + "\n");
})
}
三、操作方法
打开DOS窗口,输入node xxx,首先运行服务端
再新打开一个DOS串口,输入node xxx,运行客户端,在客户端输入要说的话,服务端就会显示说的话,再由服务端发给所有的用户

 
posted @   女人,应该骄傲的活着  阅读(155)  评论(1编辑  收藏  举报
编辑推荐:
· 智能桌面机器人:用.NET IoT库控制舵机并多方法播放表情
· Linux glibc自带哈希表的用例及性能测试
· 深入理解 Mybatis 分库分表执行原理
· 如何打造一个高并发系统?
· .NET Core GC压缩(compact_phase)底层原理浅谈
阅读排行:
· DeepSeek火爆全网,官网宕机?本地部署一个随便玩「LLM探索」
· 开发者新选择:用DeepSeek实现Cursor级智能编程的免费方案
· 【译】.NET 升级助手现在支持升级到集中式包管理
· 独立开发经验谈:如何通过 Docker 让潜在客户快速体验你的系统
· Tinyfox 发生重大改版
点击右上角即可分享
微信分享提示