【发布时间】:2020-12-20 21:33:04
【问题描述】:
我正在创建一个允许用户与其他个人用户进行对话的应用。 作为应用程序的用户,每当我与之交谈的人连接到应用程序时,我都希望收到一条消息,提醒我他在线。 为此,我将 node.js 与 socketIO 一起使用并做出反应。
我在服务器中实现以下内容的方式是:
const socketio = require('socket.io');
const io = socketio(server);
io.on('connection', async (socket) => {
const { user } = socket.request;
const userConversationIds = user.conversations;
socket.join(conversationIds);
let ioToConversations = io;
userConversationIds.forEach((conversationId) => {
ioToConversations = ioToConversations.to(conversationId);
});
ioToConversations.emit('online', `${user.firstName} ${user.lastName} is now online!`);
});
在客户端:
import io from 'socket.io-client';
const socket = io();
componentDidMount () => {
socket.on('online', (messageText) => {
console.log(messageText); // eslint-disable-line
});
};
以上所有都导致了“用户现在在线”消息,只发送给now-connected-user本身。 我希望对话中的其他用户拥有该消息,而连接的用户本身没有。
我在这里做错了什么?
【问题讨论】: