node.js - 套接字 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
解决方案
推荐阅读
- bash - 调用函数时在函数内运行命令替换
- java - 如何在正在运行的活动中从普通 Java 类中打印出一些东西?
- asynchronous - 同步方法调用异步方法,里面有异步方法
- reactjs - API 重新运行 [object Object]
- java - Maven 测试没有运行黄瓜测试
- ios - 如何快速替换特定位置的字母
- javascript - SendEmail 函数:由于空白行中的公式而出错
- r - 计算自第一个事件 R 以来经过的天数
- sql - 如何在找到两个连续行之间的 MAX() 差异之前对表进行排序
- puppeteer - Puppeteer:无头 Chromium 中的屏幕截图导致块状渐变