服務器有消息主動推送到web應用

一般狀況下,不管是web瀏覽器仍是移動app,咱們與服務器之間的交互都是主動的,客戶端向服務器端發出請求,而後服務器端返回數據給客戶端,客戶端瀏覽器再將信息呈現,客戶端與服務端對應的模式是: 客戶端請求--服務端響應,這種機制對於信息變化不是特別頻繁的應用尚可,但對於實時要求高、海量併發的應用來講顯得捉襟見肘,尤爲在當前業界移動互聯網蓬勃發展的趨勢下,高併發與用戶實時響應是 Web 應用常常面臨的問題,好比金融證券的實時信息,Web 導航應用中的地理位置獲取,社交網絡的實時消息推送,新聞的訂閱,天氣的提醒等。這些狀況下,須要服務器主動推送消息給客戶端。web

那麼在這樣的模式下,會有幾個問題須要咱們思考下:ajax

1.應用服務器如何肯定每個應用所在的設備跨域

2.服務器端是如何將消息推送到客戶端的,客戶端又不像服務器有一個固定的地址瀏覽器

帶着這些疑問咱們來研究一下目前有哪些技術能夠解決該問題:服務器

1、Ajax輪詢

所謂的Ajax輪詢,其實就是定時的經過Ajax查詢服務端,客戶端按規定時間定時像服務端發送ajax請求,服務器接到請求後立刻返回響應信息並關閉鏈接。websocket

這種技術方式實現起來很是簡單,可是這種方式會有很是嚴重的問題,就是須要不斷的向服務器發送消息詢問,這種方式會對服務器形成極大的性能浪費。網絡

還有一個相似的輪詢是使用JSONP跨域請求的方式輪詢,在實現起來有差異,但基本原理都是相同的,都是客戶端不斷的向服務器發起請求。併發

優勢app

實現簡單。socket

缺點

這是經過模擬服務器發起的通訊,不是實時通訊,不顧及應用的狀態改變而盲目檢查更新,致使服務器資源的浪費,且會加劇網絡負載,拖累服務器。

二,WebSocket

WebSocket是HTML5開始提供的一種在單個 TCP 鏈接上進行全雙工通信的協議。WebSocket通信協議於2011年被IETF定爲標準RFC 6455,WebSocketAPI被W3C定爲標準。在WebSocket API中,瀏覽器和服務器只須要作一個握手的動做,而後,瀏覽器和服務器之間就造成了一條快速通道。二者之間就直接能夠數據互相傳送。

 

 

 因爲websocket技術要說明白的話所須要的篇幅不小,因此會在以後的單獨文章中介紹下websocket的使用方式,這裏就不作詳細的說明了。

相關文章
相關標籤/搜索