与服务器同步倒计时websocket

请问各路大神服务器倒计时怎么做的,
1.是在前端做还是在后端做??

1赞

首先,倒计时前后端都需要做,但是一般服务器不会把每次倒计时通过消息发送给客户端。一般,服务器会发消息告诉前端本次倒计时总共需要倒计时多少时间,前端自己动手去更新倒计时显示,也就是前端自己去做倒计时(倒计时时长 = 服务器给定的倒计时长时长 - 2*网络延迟)。

比如:
networkDelayTime = 50ms; \\ 网络延迟(通过心跳包可以计算的一个平均值)
sCountdownTime = 10000ms; \\ 服务给定的倒计时总时长
cCountdownTime = 10000 - 50 * 2 = 9900ms; \\ 客户端需要进行的倒计时总时长

客户端有两种方案可以处理:

1)用第一次的倒计时来弥补部分误差。

9900 % 1000 = 900ms;
第一次倒计时间隔900ms,后面每次都间隔1000ms;

2)将误差均分到每次倒计时。

onceCountdownTime = 9900 / 10 = 990ms;
使用调度器让程序每990ms进行一次倒计时。

倒计时结束时服务也会像前端发送一次消息,然后前端处理对应逻辑。

1赞

谢谢 您的指导,干货满满