我正在使用Socket io在Web用户之间建立聊天。首次登录用户然后连接到服务器套接字时,使用socket.io('INPUT_MESSAGE',data)事件,将发送者电子邮件,接收者电子邮件和消息作为数据,我没有任何问题。然后,我使用接收者的电子邮件获取他的socketId,最后使用io.sockets.connected [socketId] .emit('OUTPUT_MESSAGE')事件将消息发送到相应的接收者。 到目前为止,我运行良好。但是,当我重置服务器并且当前连接的客户端再次连接时,“ OUTPUT_MESSAGE”事件不再起作用了...知道吗?
当新的客户端连接到套接字(名称是电子邮件客户端)时:
socket.on('SEND_NAME_TO_SERVER', name => {
serverNames = [...serverNames, { socketId: socket.id, name }];
});
收到来自客户的新消息:
socket.on('INPUT_MESSAGE', data =>{
let userSocket ="";
const { message, user, sender,} = data;
.....Add the new message to database....
for (let i = 0; i < serverNames.length; i++){
if (serverNames[i].name === user){
userSocket=serverNames[i].socketId;
io.sockets.connected[userSocket].emit("OUTPUT_MESSAGE_toUSER", data);
)};