10 回答

TA貢獻(xiàn)1815條經(jīng)驗(yàn) 獲得超13個(gè)贊
看你的描述,這樣的需求還是 很少見(jiàn)的。 要分成兩部分,一是定時(shí),而是推送。
先說(shuō)定時(shí):定時(shí) Java 自己原生的 timeTask、quartz框架 、定時(shí)線程池 等都可以實(shí)現(xiàn)。
而前臺(tái)推送,這就有點(diǎn)問(wèn)題了。 按照樓主描述 要刷新頁(yè)面,也就是說(shuō) 要求 瀏覽器一直開著,而推送,可以使用 長(zhǎng)連接、H5的websocket、甚至一些已有的公共類庫(kù)。
用js的簡(jiǎn)單實(shí)現(xiàn)的話,可以使用 setInterval,或者 setTimeOut ,先獲取定時(shí)時(shí)間,再定時(shí)獲取服務(wù)端時(shí)間,比對(duì)時(shí)間差,然后發(fā)送請(qǐng)求來(lái)刷新數(shù)據(jù)。
比如:進(jìn)入頁(yè)面發(fā)起請(qǐng)求 獲取 定時(shí)時(shí)間(2點(diǎn))和服務(wù)器時(shí)間(1點(diǎn)),計(jì)算 下次發(fā)請(qǐng)求的時(shí)間,也就是1個(gè)小時(shí)后再發(fā)請(qǐng)求獲取數(shù)據(jù)。
你說(shuō)導(dǎo)致崩潰,估計(jì)是你一直發(fā)長(zhǎng)連接,不斷請(qǐng)求,被瀏覽器認(rèn)為不安全,攔截了或者響應(yīng)超時(shí)了?

TA貢獻(xiàn)1801條經(jīng)驗(yàn) 獲得超16個(gè)贊
后臺(tái)用quartz定時(shí)任務(wù),處理完成結(jié)果后,前臺(tái)有websocket,后臺(tái)一旦執(zhí)行定時(shí)任務(wù)后就往前臺(tái)推送數(shù)據(jù)。

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
quartz定時(shí)任務(wù),前端websocket心跳保活,發(fā)送數(shù)據(jù)
添加回答
舉報(bào)