websocket我的理解總結

WebSocket

  • 釋義:聊天室、服務、套接字、協議
  • 引用:https://www.ibm.com/developerworks/cn/web/1112_huangxa_websocket/index.htmlhtml

    做爲下一代的 Web 標準,HTML5 擁有許多引人注目的新特性,如 Canvas、本地存儲、多媒體編程接口、WebSocket 等等。這其中有「Web 的 TCP 」之稱的 WebSocket 格外吸引開發人員的注意。WebSocket 的出現使得瀏覽器提供對 Socket 的支持成爲可能,從而在瀏覽器和服務器之間提供了一個基於 TCP 鏈接的雙向通道。Web 開發人員能夠很是方便地使用websocket構建實時web應用,開發人員的手中今後又多了一柄神兵利器。前端

  • webSocket協議是一個持久化協議,相對http這種非持久的協議來講。
    簡單說:http1.0中,一個request對應一個response,當次訪問結束
    http1.1中,多個request對應多個response,採用keep-alive;
    總歸:一個req只能對應一個res,而且這個res不能主動發送給客戶端,它是被動的。嗯,很被動。而且,http是無狀態協議,一旦請求結束,它就會把關於請求的一切都給忘了,而後等你下次再請求的時候,還得從新認識它一下,從新發送請求,它再從新給你計算一次結果並返回給你。
  • 實時web 應用
    普通web請求通信過程
    web

    1.問題:好比說在線遊戲、在線證券、設備監控、新聞在線播報、RSS 訂閱推送等等,當客戶端瀏覽器準備呈現這些信息的時候,這些信息在服務器端可能已通過時了。
    2.[之前的解決方案][3]
    1)ajax輪詢:前端設置一個定時器,每隔一段時間,給服務器發送一個請求,而後服務器給你返回,不停的問,服務器不停的回,最後的結果,服務器弱點的話,就是崩了!
    2)long poll (長輪詢):這個也是同一個機制,不過採起的是阻塞模型。客戶端到服務器家借錢,服務器沒有錢,說是去打工掙錢了,等掙到錢就給他,可是客戶端不走,等到服務器把錢拿回來了再走,或者客戶端等的時間太長了,已經超過它設定的等待時間,它就會結束此次借錢任務,而後過些時候,再過來看看,服務器是否是已經有錢了。若是說是,客戶端不停的和服務器要錢,來一趟,拿走,再來一趟,拿走,那麼這種方法和ajax輪詢沒有區別。術語:當服務器端沒有數據更新的時候,鏈接會保持一段時間週期直到數據或狀態改變或者時間過時,經過這種機制來減小無效的客戶端和服務器間的交互ajax

  • 簡單的總結:(若錯誤請指出)
    1.性能高:爲何性能高呢,由於客戶端只要一次請求,鏈接上了,就再也不請求,等待服務器主動給客戶端數據:[情景以下][3]:
    客戶端:啦啦啦,我要創建Websocket協議,須要的服務:chat,Websocket協議版本:17(HTTP Request)
    服務端:ok,確認,已升級爲Websocket協議(HTTP Protocols Switched)
    客戶端:麻煩你有信息的時候推送給我噢。。
    服務端:ok,有的時候會告訴你的。
    服務端:有更新啦
    服務端:又有更新啦
    服務端:哈哈哈哈哈啊哈哈哈哈
    服務端:笑死我了哈哈哈哈哈哈哈
    那麼爲何他會解決服務器上消耗資源的問題呢?其實咱們所用的程序是要通過兩層代理的,即HTTP協議在Nginx等服務器的解析下,而後再傳送給相應的Handler(PHP等)來處理。簡單地說,咱們有一個很是快速的接線員(Nginx),他負責把問題轉交給相應的客服(Handler)。自己接線員基本上速度是足夠的,可是每次都卡在客服(Handler)了,老有客服處理速度太慢。,致使客服不夠。Websocket就解決了這樣一個難題,創建後,能夠直接跟接線員創建持久鏈接,有信息的時候客服想辦法通知接線員,而後接線員在統一轉交給客戶。這樣就能夠解決客服處理速度過慢的問題了
    [3]:https://www.zhihu.com/question/20215561
    2.雙向:服務器也能主動發送數據給客戶端了,再也不是客戶端踹一腳應一聲的狀態
    3.兼容性:能兼容到ie10+,chrome4+,firefox4+,opera10+,Safari5+
    4.能跨域(socket.io)chrome


socket.io
相關文章
相關標籤/搜索