这就是我想要实现的目标:
用户“A”,在浏览器窗口中执行一系列事件,让我们现在保持简单,只需按下按键。
这一系列事件通过websocket发送到服务器并广播到所有连接的客户端。
所有连接的客户端都会在正确的时间点看到在浏览器窗口中发生的同一系列事件,例如,如果用户A按下键'a',等待2秒,然后按下键'b',I希望在连接的客户端中复制2秒延迟。
此外,击键之间的时间可能非常短(20ms),因此,我希望系统非常准确。
我提出了“抽样”事件的想法,基本上每10ms运行一个setInterval
循环,它在数组中存储如下序列:
[{key: 'none'}, {key: 'none'}, {key: 'a'}, {key: 'a'}, {key: 'none'}, {key: 'none'}, {key: 'b'}...]
然后通过websokets将数组发送到侦听客户端,在客户端上,类似的10ms setInterval
循环遍历事件数组“重放”。
为了达到这个目的,你有更好的想法吗?
注意:我故意忽略网络延迟