【发布时间】:2016-12-25 10:52:14
【问题描述】:
在我的服务器上,我同时调用两个发射,看起来像这样。
if (songs.length > 0) {
socket.emit('data loaded', songs);
socket.broadcast.to(opponent).emit('data loaded', songs);
}
一个给对手,另一个给自己。
加载数据后,我的 Android 应用上的两个玩家都会出现倒计时。对我来说,重要他们在屏幕上同时看到相同的数字。准确地说,它应该同步运行。我该怎么做?
【问题讨论】:
-
也许让客户端发回一个令牌,表示他们在倒计时的位置,并且只有当它们具有相同的值时才发送消息倒计时?不幸的是,如果您考虑到每个用户的延迟,我认为这可能是唯一的方法。
-
@SamJudge 你能用代码示例解释更多吗?
-
您需要精确到什么程度?用户之间的距离有多远,用户和服务器之间的延迟是多少?使用上面的代码,两个用户应该非常接近同步,但这实际上取决于您对“同步”的定义......
-
将客户端时钟同步到服务器,发送带有响应的未来时间戳,允许一些 MS 延迟。当客户端到达时间时,触发事件。届时两个玩家都应该拥有有效载荷(msLag *2)
标签: node.js socket.io synchronized