Javascript 如何确保socket.io问答游戏中的所有玩家同时显示问题?
我正在开发一个在客户端浏览器中运行的多人问答游戏。它在服务器端使用socket.io和node.js,在客户端使用javascript 问题从数据库中挑选出来,同时发送给每个玩家,但较慢的互联网连接可能意味着他们将在不同的时间收到问题 可能的解决方案:Javascript 如何确保socket.io问答游戏中的所有玩家同时显示问题?,javascript,node.js,socket.io,Javascript,Node.js,Socket.io,我正在开发一个在客户端浏览器中运行的多人问答游戏。它在服务器端使用socket.io和node.js,在客户端使用javascript 问题从数据库中挑选出来,同时发送给每个玩家,但较慢的互联网连接可能意味着他们将在不同的时间收到问题 可能的解决方案: 为每个问题发送一个时间戳,告知浏览器何时显示问题。时间戳应为(发送时间+x秒),以说明连接延迟。但是,如果客户知道如何使用控制台,他们可以在问题到达时立即截取问题,从而在所有其他玩家之前看到它 那么,我如何才能确保没有一个玩家拥有不公平的优势
- 为每个问题发送一个时间戳,告知浏览器何时显示问题。时间戳应为(发送时间+x秒),以说明连接延迟。但是,如果客户知道如何使用控制台,他们可以在问题到达时立即截取问题,从而在所有其他玩家之前看到它
那么,我如何才能确保没有一个玩家拥有不公平的优势?只有在所有参与者的登录和套接字连接建立后,您才可以编写服务器端逻辑来发送问题 你不能。重要的是,所有玩家都相信他们在同一时间比赛,玩家在同一时间回答问题,结果由服务器决定。没有人会获得优势,因为他们有相同的回答时间,而回答时间是从提出问题到给出答案之间的时间。它们最多只相隔几秒钟,客户端完全不知道它们不是同时玩的 一种可能的解决方案是,当用户收到问题并提交答案时,将信息存储在服务器上。 作为补充,您定义了所有用户都可以提交答案的时间框架(也称为轮)。 您可以通过时间戳中的最小差异来定义赢家。Socket.io延迟不应在逻辑中产生任何重大问题,因为您发送的数据似乎不多,同时Socket具有心跳逻辑,如果您的客户端出现连接问题,他将断开连接。为了减少这种逻辑被破坏的风险,您可以减少SoCKI.IO库可以考虑为断开连接的时间-<代码> PialStudio和