Nodejs + WebSocket + Vue 一对一、一对多聊天室 - 第三章

obj = JSON.parse(obj);

// 将所有uid对应的连接conn存到一个对象里面

conns[‘’+obj.uid+‘’] = conn;

if(obj.type===1){

let isuser = users.some(item=>{

return item.uid === obj.uid

})

if(!isuser){

users.push({

nickname: obj.nickname,

uid: obj.uid

});

}

boardcast({

type: 1,

date: moment().format(‘YYYY-MM-DD HH:mm:ss’),

msg: obj.nickname+‘加入聊天室’,

users: users,

uid: obj.uid,

nickname: obj.nickname,

// 增加参数

bridge: obj.bridge

});

} else {

boardcast({

type: 2,

date: moment().format(‘YYYY-MM-DD HH:mm:ss’),

msg: obj.msg,

uid: obj.uid,

nickname: obj.nickname,

// 增加参数

bridge: obj.bridge

});

}

})

conn.on(“close”, function (code, reason) {

console.log(“关闭连接”)

});

conn.on(“error”, function (code, reason) {

console.log(“异常关闭”)

});

}).listen(8001)

console.log(“WebSocket建立完毕”)

主体结构还是和第二章类型,不同的是:

1、每次将uid对应的conn存储到一个对象conns上

2、根据客户端传入的参数bridge来判断,是群发还是一对一发送

3、群发还是第二章逻辑即可

server.connections.forEach((conn, index) => {

conn.sendText(JSON.stringify(obj));

})

4、一对一发送

你可能感兴趣的:(程序员,vue.js,websocket,javascript)