【发布时间】:2019-03-29 09:48:20
【问题描述】:
我正在构建一个平台,多个用户可以在该平台上相互交互,并在另一个用户以某种方式与自己交互时收到通知。例如发送消息、发送请求或更新服务器上的一些协作对象。这里没什么特别的。 因此,我喜欢在带有 express 的节点服务器上使用 Socket.io(前端为 Angular 7),以尽可能保持用户体验的实时性。
我想知道我是否真的需要引入命名空间和房间,因为我当前的实现应该运行良好。你能告诉我,如果我的实现类型有问题吗?
我正在使用某种套接字连接存储作为映射,我所有的活动套接字连接都在其中。这是我的服务器端实现的示例:
// <userId, socket>
var Connections = new Map();
removeConnection = function(socket) {
console.log("removing User with Id = " + socket.userId);
Connections.delete(socket.userId);
}
io.on('connection', (socket) => {
socket.on('register', (userId) => {
// do some authentication here..
socket.userId = userId;
Connections.set(userId, socket);
console.log("User registered with id " + userId);
});
socket.on('disconnect', () => {
removeConnection(socket);
});
socket.on('new_message', (data) => {
// persist data in DB and so on..
socket.emit('new_message', data);
var receiver = Connections.get(data.receiverId);
// if receiver is online send message
if(receiver) {
receiver.emit('new_message', data);
}
});
});
【问题讨论】:
标签: socket.io