我正在开发一个选择用户并且有15秒的应用程序。该用户响应的计时器。用户应用程序每5秒查询一次数据库,以查看是否已选择该用户。如果是这样移动应用程序开始15秒。计时器。问题是计时器永远不会匹配,因为用户应用程序可以处于与后端不同的计时器周期,并且可以在以后查询数据库。我使用Angular,NodeJS和expressJS + MongoDB来开发这个应用程序。
关于如何让定时器同步的任何建议?
答案 0 :(得分:3)
您不需要同时运行两个计时器。在前端启动计时器,然后让后端知道前端的计时器何时启动。只要你把一方视为真理的唯一来源,另一方就能够推断出计时器是否已经完成。
虽然定时器可能不同步,但到处都应该是相同的。如果后端知道前端计时器在12:01:00开始,它也知道计时器将在12:01:15结束。通过这种方式,它可以继续检查当前时间是在12:01:15之前还是之后。
答案 1 :(得分:2)
这绝对是websockets的工作!与HTTP不同的Websockets支持双向数据流,因此您的服务器和客户端可以实时通信。 Socket.io是一个非常流行的框架,用于实现这种类型的交互,并且可以无缝地挂接到节点/表达。
以下是启动http://socket.io/get-started/chat/的教程。
基本流程将是
io.emit('user chosen', { userId: '<the user id>' });
。这将通过套接字向所有连接的应用程序发送消息。setTimeout(() => socket.emit('user chosen end', { userId: '<the user id>' }), 15000);
socket.on('user chosen', function(msg){ /* Enable the input */ });
socket.on('user chosen end', function(msg){ /* Disable the input & do anything else */ });
希望这会有所帮助:)