如何用JS设计和写多人聊天室的功能,代码是什么

Admin 2022-06-20 群英技术资讯 375 次浏览

在这篇文章中,我们来学习一下“如何用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设计和写多人聊天室的功能,代码是什么”的介绍了,感谢各位的阅读,希望这篇文章能帮助大家解决问题。如果想要了解更多知识,欢迎关注群英网络,小编每天都会为大家更新不同的知识。 群英智防CDN,智能加速解决方案
标签: js聊天室

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服