【node进阶】深入浅出websocket即时通讯-实现简易的群聊&私聊
const WebSocket = require('ws');
// 连接管理
const wss = new WebSocket.Server({ port: 8080 });
wss.on('connection', function connection(ws) {
// 当客户端发送消息时
ws.on('message', function incoming(message) {
// 解析消息,判断是群聊还是私聊
const data = JSON.parse(message);
if (data.to === 'all') {
// 群聊消息广播给所有客户端
wss.clients.forEach(function each(client) {
if (client !== ws && client.readyState === WebSocket.OPEN) {
client.send(message);
}
});
} else {
// 私聊消息直接发送给指定的客户端
wss.clients.forEach(function each(client) {
if (client.url === data.to && client.readyState === WebSocket.OPEN) {
client.send(message);
}
});
}
});
// 当客户端关闭连接时
ws.on('close', function close() {
console.log('disconnected');
});
// 欢迎新客户端
ws.send(JSON.stringify({ type: 'welcome' }));
});
这段代码实现了简单的群聊和私聊功能。它监听连接事件,并在接收到消息时根据消息内容进行广播或者点对点发送。同时,它还处理了客户端的关闭事件,并在新客户端连接时给予欢迎。这个例子教导开发者如何使用WebSocket实现基本的即时通信功能。
评论已关闭