參考文章:實時數(shù)據(jù)更新
一、輪詢:簡單來說輪詢就是客戶端不停地調(diào)用服務(wù)端接口以獲得最新的數(shù)據(jù)
1、短輪詢:每隔3s向服務(wù)器發(fā)送一次請求- - -請求數(shù)據(jù)
優(yōu)點:最大的優(yōu)點就是實現(xiàn)簡單
缺點:(1)無用的請求多,客戶端不知道服務(wù)端什么時候數(shù)據(jù)更新,只能不停的向服務(wù)端發(fā)送請求,
(2)數(shù)據(jù)實時性差:客戶端還是需要一段時間(3s)才能拿到最新的數(shù)據(jù)
2、長輪詢:長輪詢,客戶端發(fā)起請求后,服務(wù)端發(fā)現(xiàn)當(dāng)前沒有新的數(shù)據(jù),這個時候服務(wù)端沒有立即返回請求,而是將請求掛起,在等待一段時間后(一般為30s或者是60s),發(fā)現(xiàn)還是沒有數(shù)據(jù)更新的話,就返回一個空結(jié)果給客戶端??蛻舳嗽谑盏椒?wù)端的回復(fù)后,立即再次向服務(wù)端發(fā)送新的請求。這次服務(wù)端在接收到客戶端的請求后,同樣等待了一段時間,這次好運(yùn)的是服務(wù)端的數(shù)據(jù)發(fā)生了更新,服務(wù)端給客戶端返回了最新的數(shù)據(jù)。客戶端在拿到結(jié)果后再次發(fā)送下一個請求,如此反復(fù)。
優(yōu)點:解決了短輪詢每隔幾秒向服務(wù)端頻繁發(fā)送請求的問題;
缺點:(1)服務(wù)端資源大量消耗,服務(wù)端數(shù)據(jù)未更新時需要掛起客戶端的請求
(2)難以處理數(shù)據(jù)更新頻繁的情況
二、webSocket:用最簡單的話來介紹WebSocket就是:客戶端和服務(wù)器之間建立一個持久的長連接,這個連接是雙工的,客戶端和服務(wù)端都可以實時地給對方發(fā)送消息。首先客戶端會給服務(wù)端發(fā)送一個HTTP請求,這個請求的Header會告訴服務(wù)端它想基于WebSocket協(xié)議通信,如果服務(wù)端支持升級協(xié)議的話,會給客戶端發(fā)送一個Switching Protocal的響應(yīng),它們之間后面都是基于WebSocket協(xié)議來通信了?!枰?wù)端配合操作;
webSocket優(yōu)點: (1)客戶端和服務(wù)端建立的連接次數(shù)小,理想情況下客戶端只需要發(fā)送一個HTTP升級協(xié)議就可以升級到WebSocket連接,后面的消息推送都是通過這個通道進(jìn)行通信,無需再次建立連接.
(2)消息實時性高:因為客戶端和服務(wù)端的連接一直是建立的,而且是全雙工通信;
缺點:某些代理層軟件(如Nginx)默認(rèn)配置的長連接時間是有限制的,可能只有幾十秒,這個時候客戶端需要自動重連。要想突破這個限制你就需要將從客戶端到服務(wù)端之間所有的代理層的配置都改掉,在現(xiàn)實中這可能是不可行的;
文章來源:http://www.zghlxwxcb.cn/news/detail-854523.html
三、SSE(server-sent Events) 是一個基于HTTP協(xié)議的服務(wù)端向客戶端推送數(shù)據(jù)的技術(shù),單向—股票推送
文章來源地址http://www.zghlxwxcb.cn/news/detail-854523.html
客戶端向服務(wù)端發(fā)起一個持久化的HTTP連接,服務(wù)端接收到請求后,會掛起客戶端的請求,有新消息時,再通過這個連接將數(shù)據(jù)推送給客戶端。需要注意的是和WebSocket長連接不同,SSE的連接是單向的,也就是說它不允許客戶端向服務(wù)端發(fā)送消息。
優(yōu)點: (1)連接次數(shù)小,一般客戶端和服務(wù)端只有一個持久的HTTP連接,因此性能也是很好的
(2)數(shù)據(jù)實時性高:因為服務(wù)端和客戶端是持久的連接,所以有新消息的話可以直接推送到客戶端;
缺點:(1)單向通信:SSE建立的HTTP長連接是單向的,不允許客戶端向服務(wù)端推送數(shù)據(jù)
(2)配置錯誤的話,客戶端需要不斷和服務(wù)端進(jìn)行重連.
到了這里,關(guān)于數(shù)據(jù)大屏--->前端實時更新數(shù)據(jù)的幾種方式的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!