消息推送從始至終~目錄

認識它

消息推送這個東西從有了互聯網就出現了,但直到出現了HTML5的Websocket,這個東西纔算真的,更好了獲得瞭解決,由於以前的方式,咱們公認爲,它對服務器的壓力太大了,客戶端不斷的在作polling工做,直到服務端有了消息,而後將消息獲取過來,這種方式,始終是被動式的,而且,經過瀏覽器發送的請求,在HTML5出現以前都是HTTP方式的,這種一個請求,一個響應的方式不能很好的實現一個長連接的保持,直到出現了websocket,它能夠使一個客戶端與服務端保持一個長連接,這事實上,也是實現服務器消息推送到客戶端的基礎。javascript

它的發展歷史

2000年以前爲第一波消息推送技術,使用的概念叫Webcasting。大體思想就是用戶來服務端註冊一個或者多個通道channel,而後服務端肯定給某些個channel或某個channel發送消息。2000到2007年最火的詞叫comet,好比有Polling(這個是最普通的輪詢),Long Polling(把HTTP的響應鎖住,當有消息時,經過channel返回客戶端),可是無論什麼技術,都僅限瀏覽器,而又由於瀏覽器只能發起HTTP的單向的通訊請求,因此,人們就想起了更穩定的長連接方式socket,可是Socket方式是走TCP協議的,瀏覽器如何能發起TCP鏈接呢?HTML5的Websocket技術就解決了這個問題。java

新協議,老技術

Websocket實際上是一些老技術的結合,自己並非一種新的技術,可是一種新的協議,它的地址形式如ws://192.168.0.3:8090,wss://192.168.0.3:8090,後面的地址形式是加密的,就是HTTP協議地址有http和https同樣。web

Websocket它首先向服務器發一個HTTP請求,與服務器握手成功後,再以TCP的方式進行數據傳輸,因此Websocket實際上是結合了HTTP和TCP協議的一種新的協議方式,但自己的技術是老的,呵呵。ajax

百度百科對websocket的闡述

目標

WebSocket 規範的目標是在瀏覽器中實現和服務器端雙向通訊。雙向通訊能夠拓展瀏覽器上的應用類型,例如實時的數據推送(股票行情)、遊戲、聊天等.瀏覽器

背景

在瀏覽器中經過http僅能實現單向的通訊,comet能夠必定程度上模擬雙向通訊,但 效率較低,並須要服務器有較好的支持; flash中的socket和xmlsocket能夠實現真正的雙向通訊,經過 flex ajax bridge,能夠在javascript中使用這兩項功能. 能夠預見,若是websocket一旦在瀏覽器中獲得實現,將會替代上面兩項技術,獲得普遍的使用.面對這種情況,HTML5定義了WebSocket協 議,能更好的節省服務器資源和帶寬並達到實時通信。

原理

WebSocket protocol 是HTML5一種新的協議(protocol)。它是實現了瀏覽器與服務器全雙工通訊(full-duplex)。
現不少網站爲了實現即時通信(real-time),所用的技術都是輪詢(polling)。輪詢是在特定的的時間 間隔(time interval)(如每1秒),由瀏覽器對服務器發出HTTP request,而後由服務器返回最新的數據給客服端的瀏覽器。這種傳統的HTTP request的模式帶來很明顯的缺點 – 瀏覽器須要不斷的向服務器發出請求(request),然而HTTP request 的header是很是長的,裏面包含的數據可能只是一個很小的值,這樣會佔用不少的帶寬。
而最比較新的技術去作輪詢的效果是Comet – 用了AJAX。但這種技術雖然可達到全雙工通訊,但依然須要發出請求(reuqest)。
在 WebSocket API,瀏覽器和服務器只須要要作一個握手的動做,而後,瀏覽器和服務器之間就造成了一條快速通道。二者之間就直接能夠數據互相傳送。在此 WebSocket 協議中,爲咱們實現即時服務帶來了兩大好處:
1. Header
互相溝通的Header是很小的-大概只有 2 Bytes
2. Server Push
服務器能夠主動傳送數據給客戶端

目錄

第一回  認識Websocket及原來的消息推送方式服務器

第二回  SignalR的出現,改變了這一切websocket

第三回  SignalR與MVC搭建消息推送環境asp.net

相關參考文章

http://www.asp.net/signalrsocket

http://baike.baidu.com/view/3623887.htmflex

相關文章
相關標籤/搜索