js代码如何实现多人聊天室
发表于:2024-09-23 作者:千家信息网编辑
千家信息网最后更新 2024年09月23日,这篇文章将为大家详细讲解有关js代码如何实现多人聊天室,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。设计要求:1)用户应通过注册登录聊天室2)聊天室可以显示所有在线
千家信息网最后更新 2024年09月23日js代码如何实现多人聊天室
这篇文章将为大家详细讲解有关js代码如何实现多人聊天室,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。
设计要求:
1)用户应通过注册登录聊天室
2)聊天室可以显示所有在线用户
3)在每一条聊天内容之前,显示发出这条聊天内容的用户名。
4)可进行私密聊天。
5)当用户进入和离开聊天室时,系统会在聊天室里广播
config.js 代码如下
module.exports={ "port":3000, "host":"127.0.0.1"}
broadcast.js 代码如下
exports.broadcast=function (data,users) { var from=data.from; var message=data.message; message = from+"说: "+message; //构建消息 var send={ mstype:"broadcast", message:message }; send =new Buffer(JSON.stringify(send)); //遍历用户组所有用户,出发送方的所有用户 for(var username in users){ if(username!=from){ users[username].write(send); } }};
Signup.js 代码如下
exports.signup = function (socket,data,users) {//获取注册用户的用户名 var username=data.username; if(!users[username]){ //不存在,则保存用户名和socket users[username]=socket; var send={ mstype:"signup", code:1000, username:username, message:"注册成功" }; socket.write(JSON.stringify (send)); }else{//cunzai var send={ mstype:"signup", code:1001, message: "用户名已被占,请重新输入用户名" } socket.write(JSON.stringify(send)); }};
p2p.js 代码如下
exports.p2p=function (socket,data,users) { var from=data.from; var to=data.to; var message=data.message; var receiver=users[to]; if(!receiver){//接收方不存在 var send={ mstype:"p2p", code:2001, message:"用户"+to+"不存在" } socket.write(JSON.stringify(send)); }else{ //存在则向接收方发送信息 var send={ mstype:"p2p", code:2000, from:from, message:from+"对你说"+message } receiver.write(JSON.stringify(send)); }};
Server服务器端代码
//p2p 聊天室服务器var net=require("net");var config=require("./config");var broadcast=require("./broadcast");var p2p=require("./p2p");var signup=require("./signup");var users={};var server=net.createServer();server.on ("connection",function (socket) { socket.on("data",function (data) { data = JSON.parse(data); switch (data.mstype) { case "signup": signup.signup(socket, data, users); break; case "broadcast": broadcast.broadcast(data, users); break; case "p2p": p2p.p2p(socket, data, users); break; default: break; } }); socket.on("error",function () { console.log("有客户端异常退出了"); });});server.listen(config.port,config.host,function () { console.log("服务器在端口"+config.port+"启动监听");});
Client客户端代码如下:
var net=require("net");var config=require("./config");var Client=net.createConnection({ port:config.port, host:config.host});var username;Client.on("connect",function () { console.log("请输入用户名:"); process.stdin.on("data",function (data){ data=data.toString().trim(); //判断用户是否已经存在 if(! username){ var send={ mstype:"signup", username:data }; Client.write(JSON.stringify(send)); return; } var regex=/(.{1,18}):(.+)/; var matches=regex=regex.exec(data); if(matches){ //能匹配则是p2p var from=username;//发送方是自己 var to=matches[1];//发给谁 var message=matches[2]; //构造JSON形式信息 var send={ mstype: "p2p", from:username, to:to, message:message }; Client.write(JSON.stringify(send)); }else{ //广播 var send={ mstype:"broadcast", from:username, message:data }; Client.write(JSON.stringify(send)); } });});Client.on("data",function (data) { data=JSON.parse(data); switch (data.mstype) { case "signup": var code=data.code; switch (code) { case 1000: username=data.username; console.log(data.message); break; case 1001: console.log(data.message); break; default: break; } break; case "broadcast": console.log(data.message); break; case "p2p": var code=data.code; switch (code) { case 2000: console.log(data.message); break; case 2001: console.log(data.message); break; default: break; } break; default: break; }});Client.on("error",function () { console.log("聊天室已关闭!!");})
关于"js代码如何实现多人聊天室"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
用户
代码
聊天室
用户名
内容
服务器
篇文章
服务
多人
信息
客户
客户端
收方
更多
广播
输入
不错
实用
成功
形式
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
腾讯云买域名服务器
厦门软件开发前
穿越火线爆破服务器
国电通网络技术招聘
数据库导出问题怎么解决
办公室网络安全策略
服务器为什么导轨短
视频聊天软件开发的小知识点
江苏戴尔服务器维修调试哪家便宜
南京信息软件开发商家
杉杉来了软件开发
互联网科技行业ppt
数据库中如何查询表中的寻物信息
微信数据库无法恢复
兰州市大学生网络安全教育平台
怎么设置服务器管理
阿里云服务器机房图片
我的世界2b2t服务器最坏的玩家
联合作战网络安全防护对策
路由器管理界面服务器未响应
四川省统计数据库
中化互联网科技
民警怎样注意网络安全
linux数据库登录
部队网络安全个人自查
手游魂斗罗有服务器吗
挖矿服务器租用
删数据库跑路犯法吗
社会舆情和网络安全工作方案
封印者服务器维护中