| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- //用户信息
- let guest_info = function () {
- this.connect = null;
- this.name = '';
- }
- //所有用户,必须用全局global安装,这样保证每一个线程都能访问到相同的全局数组
- global.guest_arr = [];
- var ws = require("nodejs-websocket");
- // 创建服务器
- var server = ws.createServer(function (connect)
- {
- // 监听客户端回调信息
- connect.on("text", function (data) {
- let data_json = JSON.parse(data);
- //用户登录
- if (data_json.type === 'login') {
- let bUserExist = false;
- for (let i = 0; i < global.guest_arr.length; i++) {
- let guest = global.guest_arr[i];
- if (guest.name === data_json.name) {
- bUserExist = true;
- global.guest_arr[i].connect = connect;
- }
- }
- //如果新用户就注册
- if (!bUserExist) {
- let guest = new guest_info();
- guest.connect = connect;
- guest.name = data_json.name;
- global.guest_arr.push(guest);
- }
- console.log(data_json.name+'进入聊天室')
- }
- //只需要服务器接收消息不需要发送给其他用户
- else if (data_json.type === 'server') {
- }
- //发送消息给指定名字的用户
- else if (data_json.type === 'user') {
- console.log('收到'+data_json.name+'的消息')
- let guest = null;
- // 判断用户是否存在
- for (let i = 0; i < global.guest_arr.length; i++) {
- let name = global.guest_arr[i].name;
- if (name === data_json.user_name) {
- guest = global.guest_arr[i];
- console.log('存在用户')
- }
- }
- // 用户存在发送消息
- if (guest) {
- guest.connect.sendText('{"name":"'+ data_json.name +'","message":"'+data_json.message+'"}');
- console.log(data_json.name+'发送信息给'+guest.name)
- console.log(data_json.message)
- }
- }
- //发送消息给所有用户
- else if (data_json.type === 'all') {
- for (let i = 0; i < global.guest_arr.length; i++) {
- let guest = global.guest_arr[i];
- guest.connect.sendText('{"name":"'+ data_json.name +'","message":"'+data_json.message+'"}');
- }
- }
- })
- connect.on("close", function (code, reason) {
- // console.log(code.name+'退出聊天室')
- console.log("关闭连接")
- });
- connect.on("error", function (code, reason) {
- // console.log(code.name+'异常退出聊天室')
- console.log("异常关闭")
- });
- }).listen(3000)
- console.log("WebSocket建立完毕")
|