我正在尝试实现一种方法,该方法允许将消息广播到“房间”。我当前的实现是
import * as ws from 'ws';
interface Connections {
[room: string]: ws[]
}
interface Message {
broadcastToRoom: string;
payload: any;
}
根据您所走的路线在客户端确定房间。从该路由发送的每个消息都将具有Message
结构。
我的问题是,当客户端切换房间时,如何使用服务器上的连接更新对象。到目前为止,我已经提出了这个方案,该方案将ws的副本保留在客户去过的每个房间中。
let connections: Connections = {};
// handle case when it is initially undefined
if (!connections[message.broadcastTo]) {
connections = {
...connections,
[result.broadcastToRoom]: [ws]
};
} else {
connections = {
...connections,
[result.broadcastToRoom]: [...connections[result.broadcastTo], ws]
};
}