您好,我编写了以下函数来让某人获得套接字;
x86_64
它们像这样被发射出去
var getSocket = function(persId){
var socketid = users[persId].socket;
if(io.sockets.connected[socketid]){
return io.sockets.connected[socketid];
}
}
现在,如果用户在发送套接字之前已断开连接,将导致未定义的套接字错误,这可能会导致问题。
有什么办法修改功能(而不必检查getSocket(372).emit({ ... });
)以使其不抛出错误?现在正在引起问题。
谢谢!
答案 0 :(得分:1)
您应该使用socket.io
函数,该函数已经检查过了。
io.to(room).emit()
在连接时,只需将用户加入名为372
的房间(我相信这是用户ID),然后向其发送:
io.on('connection', socket => {
const room = 372; // Get user id somehow
socket.join(room);
});
// Somewhere
io.to(372).emit(..)
回答您的特定问题,您可以使用emit
nop方法返回一个对象。另外,您还必须在访问.socket
之前检查用户是否存在。您可以使用解构来实现。
const { socket: socketId } = users[persId] || {};
完整功能应为:
const getSocket = function(persId){
const { socket: socketId } = users[persId] || {};
if(socketId && io.sockets.connected[socketId]){
return io.sockets.connected[socketId];
}
return { emit: () => {} }
}
现在您不必执行检查,因为.emit
将一直存在。
getSocket(23123213).emit(); // Will no throw if 23123213 doesn't exist