客户端正在发送包含多个要加入的房间的对象,因此一旦套接字开始流式传输,用户应该会看到仅与基于房间的用户相关的事件,所以我在事件发生时使用套接字房间方法我检查是否 event.room
与发送的“房间”相同连接的客户端开始流式传输到这些频道。
客户数据 =["room1","room2"]
事件数据 ={room: "room2",message:"This message is for room2 user only"}
因此,使用上述数据,用户应该加入两个房间并且应该期待这个事件,因为一个与事件匹配的房间没有发生下面的代码用户正在从与登录用户无关的房间获取事件。知道什么是错误的或更好的方法吗?
服务器.js
io.on('connection', function(socket) {
socket.on('joinChannel', function(rooms) {
rooms.forEach(function,(room){
socket.join(room);
console.log('Room', room);
oplogger.watch('riskAnalysisSLA.event', function(event) {
console.log(event);
if (event.room = room) {
io.sockets.in(room).emit('newMessage', event);
}
});
});
});
});
app.component.ts
ngOnInit() {
this.streamService.getAllStream().subscribe(stream => {
this.dataSource = new MatTableDataSource(stream);
this.socket.on('newMessage', (event) => {
this.dataSource.data.push(event.data);
console.log("data",event.data);
this.dataSource.data = [...this.dataSource.data]
});
this.socket.emit('joinChannel',["room1","room2"]);
});
});