消息推送這個東西從有了互聯網就出現了,但直到出現了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及原來的消息推送方式服務器
第二回 SignalR的出現,改變了這一切websocket
第三回 SignalR與MVC搭建消息推送環境asp.net
http://www.asp.net/signalrsocket
http://baike.baidu.com/view/3623887.htmflex