js代码实现多⼈聊天室本⽂实例为⼤家分享了js代码实现多⼈聊天室的具体代码,供⼤家参考,具体内容如下设计要求:
1)⽤户应通过注册登录聊天室
2)聊天室可以显⽰所有在线⽤户
3)在每⼀条聊天内容之前,显⽰发出这条聊天内容的⽤户名。
4)可进⾏私密聊天。
5)当⽤户进⼊和离开聊天室时,系统会在聊天室⾥⼴播
config.js 代码如下
"port":3000,
"host":"127.0.0.1"
}
broadcast.js 代码如下
exports.broadcast=function (data,users) {
var from=data.from;
var ssage;
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 ;
var ssage;
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 ateServer();
< ("connection",function (socket) {
<("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;
}
});
<("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 ateConnection({
port:config.port,
host:config.host
});
var username;
<("connect",function () {
console.log("请输⼊⽤户名:");
("data",function (data){
String().trim();
//判断⽤户是否已经存在
if(! username){
var send={
mstype:"signup",
username:data
};
Client.write(JSON.stringify(send));
return;
}
var regex=/(.{1,18}):(.+)/;
var matches=(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));
}
});
});
<("data",function (data) {
data=JSON.parse(data);
switch (data.mstype) {
case "signup":
var de;
switch (code) {
case 1000:
username=data.username;
console.ssage);
break;
case 1001:
console.ssage);
break;
default:
break;
}
break;
case "broadcast":
console.ssage);
break;
case "p2p":
var de;
switch (code) {
case 2000:
console.ssage);
break;
case 2001:
console.ssage);
break;
default:
break;
}
break;
default:
网站底部代码js特效
break;
}
});
<("error",function () {
console.log("聊天室已关闭!!");
})
以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。