【发布时间】:2023-02-01 13:47:57
【问题描述】:
我正在我的应用程序中建立聊天。我为此使用 socket.io。当用户发送一条消息时,我会向我的服务器发送一个 api 请求。 api 将消息存储在数据库中,然后才发出,通过套接字服务向房间中的每个人发送一条新消息。我有一个使用此方法的 SocketService 类:
private async broadcast({ type, data, chatId, senderId }: { type: string; data: any; chatId: string; senderId: string }) {
const excludedSocket = await this.getUserSocket(senderId);
if (chatId && excludedSocket) {
excludedSocket.emit;
} else if (excludedSocket) {
excludedSocket.emit(type, data);
} else if (room) {
gIo.to(room).emit(type, data);
} else {
gIo.emit(type, data);
}
}
我遇到的问题是 getUserSocket 返回一个没有广播或方法的 RemoteSocket 对象。那么我该如何实现呢?
private async getUserSocket(userId: string) {
const sockets = await this.getAllSockets();
const socket = sockets.find((s) => s.data.uid === userId);
return socket;
}
private async getAllSockets() {
const sockets = await this.io.fetchSockets();
return sockets
}
【问题讨论】:
标签: javascript node.js sockets socket.io broadcast