broadcastToSpecificUser(message: any): void {
if(message.username){
this.io.sockets.in(message.username).emit("eventArrived", message);
}else{
this.io.sockets.emit("eventArrived", message);
}
}
我正在尝试仅向特定房间的套接字发送消息。"message"是一个事件对象,其中有一个名为用户名的属性,我用它来检查房间是否存在。我应该如何修改上面的代码?
因为rooms
是一个Map
,io.sockets.adapter.rooms["room name"]
返回未定义。相反,我使用
io.sockets.adapter.rooms.get("room name")
试试这个:
if(io.sockets.adapter.rooms["room name"])
{
//if room exist
}
一个选项是使用三元运算符来定义哪个对象需要发出消息,如下所示:
broadcastToSpecificUser(message: any): void {
const emitter = message.username ? this.sockets.in(message.username) : this.io.sockets;
emitter.emit("eventArrived", message);
}