如何用JS设计和写多人聊天室的功能,代码是什么
Admin 2022-06-20 群英技术资讯 375 次浏览
本文实例为大家分享了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("聊天室已关闭!!"); })
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
本文实例为大家分享了VUE递归树形实现多级列表,供大家参考,具体内容如下什么是递归?简单来说就是在组件中内使用组件本身。为什么要用递归?如果出现很多下拉菜单,同级,分级数据,层级混杂,可以使用v-for的嵌套循环不就完事了。对,没毛病这样的话也可以做,但是如果数据又多加了【很多】级分类呢;使用v-for也能实现,但是代
本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了回调函数的相关内容,包括了什么是回调函数、回调函数有哪些特点、回调函数中this指向问题,下面一起来看一下,希望对大家有帮助。
原生Ajax与JQuery Ajax,有不少朋友对此感兴趣,下面小编给大家整理和分享了相关知识和资料,易于大家学习和理解,有需要的朋友可以借鉴参考,下面我们一起来了解一下吧。
这篇文章主要为大家详细介绍了javaScript实现放大镜特效,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
这篇文章主要为大家介绍了vue parseHTML 函数拿到返回值后的处理源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008