首页 > 解决方案 > 套接字 io 服务器在发射时使客户端感到困惑

问题描述

我正在尝试使用套接字 io 开发一个 todo 应用程序,其中 TODO 由用户登录过滤,一切正常,除非我刷新两个会话(用户 A 和用户 B),套接字 IO 服务器将 B 的信息发送给用户 A。我不'不知道是套接字 io 服务器还是客户端问题。

当每个用户登录时,在不同的时刻,数据完美地显示在前端,但是当他们同时刷新页面时,就会出现问题。

我已经尝试将 userid 与 socket.id 映射,并在服务器端发送到特定的 socketid,并使用 userid 键搜索它。控制台日志打印出来,似乎一切正常,但问题仍然存在于前端。

Socket IO 服务器端

 mapSessions[userid] = socket.id;
        
 console.log(30,userid,mapSessions);
 console.log(31,userid,mapSessions[userid]);

      
 //EMIT ALL USER TICKETS 
 this.io.to(mapSessions[userid]).emit('ticketList', await getTickets(userid));

Socket IO 客户端

  const connectSocket = useCallback(() => {
    
    if (token) {
       
        const socketTemp = io.connect(serverPath, {
            transports: ['websocket'],
            autoConnect: true,
            reconnection:true,
            forceNew: true,
            query: {
                'x-token': token
            }
        });
        dispatch(setSocket(socketTemp));
    }
}, [token, serverPath, dispatch]);

我在来自客户端的查询中发送的令牌在服务器端用于获取用户 ID 和会话状态。

注意:似乎服务器发出到最后收到的 id。我的意思是:如果用户 A 和用户 B 刷新页面并且用户 A 是最后一个向套接字服务器发送请求的人,则服务器也会将 A 的信息发送给用户 B。:/

套接字.io:3.03

标签: node.jsreactjssocket.io

解决方案


推荐阅读