我正在開發一個選擇用戶的應用程序,並具有15秒的時間。定時器爲該用戶做出響應。用戶應用程序每5秒查詢一次數據庫以查看是否選擇了該用戶。如果是這樣的移動應用程序開始15秒。計時器。問題是定時器永遠不會匹配,因爲用戶應用程序可以在不同的計時器週期上與後端不同,並且可以在以後查詢數據庫。我使用Angular,NodeJS和expressJS + MongoDB來開發這個應用程序。如何將後端計時器與移動應用程序同步
有關如何讓定時器同步的任何建議?
我正在開發一個選擇用戶的應用程序,並具有15秒的時間。定時器爲該用戶做出響應。用戶應用程序每5秒查詢一次數據庫以查看是否選擇了該用戶。如果是這樣的移動應用程序開始15秒。計時器。問題是定時器永遠不會匹配,因爲用戶應用程序可以在不同的計時器週期上與後端不同,並且可以在以後查詢數據庫。我使用Angular,NodeJS和expressJS + MongoDB來開發這個應用程序。如何將後端計時器與移動應用程序同步
有關如何讓定時器同步的任何建議?
這絕對是一個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 */ });
希望這有助於:)
你不需要在同一時間運行兩個定時器。在前端啓動一個定時器,然後讓後端知道前端定時器何時啓動。只要你將一方當作真相的唯一來源,另一方就可以推斷計時器是否完成。
雖然定時器可能不同步,但時間應該是無處不在。如果後端知道前端定時器在12:01:00開始,它也知道定時器將在12:01:15結束。這樣,它可以繼續檢查當前時間是在12:01:15之前還是之後。
好主意我喜歡它!謝謝@vanev_ –
好吧,這太好了!唯一值得關注的是我試圖小心數據使用。你認爲這會在手機上造成大量數據使用嗎?還有可擴展性,這是可擴展的嗎?或者是否需要在後端有很多應用程序節點來支持數千用戶? –