Files
chat-demo-server/websocket/connectionManager.js
T
2026-09-24 10:31:27 +08:00

46 lines
971 B
JavaScript

const onlineUsers = new Map();
// 保存用户连接
function addConnection(username, ws) {
onlineUsers.set(username, ws);
console.log(`用户 ${username} 已连接`);
console.log("当前在线用户:", [...onlineUsers.keys()]);
}
// 获取用户连接
function getConnection(username) {
return onlineUsers.get(username);
}
// 删除用户连接
function removeConnection(username) {
onlineUsers.delete(username);
console.log(`用户 ${username} 已断开`);
console.log("当前在线用户:", [...onlineUsers.keys()]);
}
// 获取所有在线用户
function getOnlineUsers() {
return Array.from(onlineUsers.keys());
}
// 广播所有在线用户
function broadcast(data) {
const message = JSON.stringify(data);
for (const ws of onlineUsers.values()) {
if (ws.readyState === WebSocket.OPEN) {
ws.send(message);
}
}
}
module.exports = {
addConnection,
getConnection,
removeConnection,
getOnlineUsers,
broadcast
};