鍍金池/ 問答/HTML/ 網(wǎng)站中的定時提醒是如何實(shí)現(xiàn)的?

網(wǎng)站中的定時提醒是如何實(shí)現(xiàn)的?

不知道要如何實(shí)現(xiàn),后端是nodejs,
如果是 在這一刻開始 定時多久以后進(jìn)行操作,可以直接在前端使用setTimeout(還要保證網(wǎng)站不被關(guān)閉),
但是有可能是設(shè)置 比如說 每天早上8點(diǎn),向用戶發(fā)送一條信息。
所以理論上來說要在服務(wù)器端設(shè)置,
請問下大概要什么思路?

不是nodejs的也可以。主要沒思路。

回答
編輯回答
玩控

為什么不去百度啊~ 一堆

http://blog.csdn.net/haorengoodman/article/details/23281343/
https://www.cnblogs.com/peida/archive/2013/01/08/2850483.html
2018年5月17日 00:30
編輯回答
逗婦乳

如果你不需要嚴(yán)格的實(shí)時更新設(shè)置,或者可以通過用戶操作來更新,那么你可以用輪詢的方式,就是定時器每隔一分鐘發(fā)一個請求到后端獲取設(shè)置的時間。

如果你需要設(shè)置完就生效,可以用長輪詢的方式,這個也是微信網(wǎng)頁版在用的方法。和上面的輪詢一樣是發(fā)請求,但是你后端不要馬上返回響應(yīng),而是定時器等待20秒,如果沒有檢測到數(shù)據(jù)更新,那么返回一個超時,如果期間數(shù)據(jù)有更新,那就馬上返回一個響應(yīng)并且關(guān)掉定時器。而前端在收到響應(yīng)或者超時的時候,重新發(fā)一個請求過去,這樣就可以保證隨時可以收到服務(wù)器的響應(yīng)。

HTML5還有webscoket可以實(shí)施通信,這個只需要連接一次服務(wù)器就可以隨時發(fā)數(shù)據(jù)到前端。

你看看哪個比較適合你用吧

2018年3月2日 00:34
編輯回答
話寡

真巧,又看到你的問題了
定時發(fā)送消息應(yīng)該不是client做的,比如早上八點(diǎn)如果用戶沒上網(wǎng)站咋辦
應(yīng)該是在服務(wù)端定時向用戶信息數(shù)據(jù)庫(或者redis)里插入數(shù)據(jù)
這樣用戶在進(jìn)入網(wǎng)站后就能在用戶中心(假設(shè)有)通過接口獲取出這條消息
或者用戶已經(jīng)進(jìn)入網(wǎng)站了,通過定時器以不影響瀏覽器效率的頻率n下,定時向服務(wù)器查詢是否有新消息
思路應(yīng)該是這樣的
至于怎么實(shí)現(xiàn)定時插入數(shù)據(jù),如果是nodejs的話,現(xiàn)在比較好用的是node-schedule庫
具體可以看下它的npm或者github

2017年2月24日 12:09