侃一侃WebSocket

  今天不講太多具體的技術,隨便侃一侃WebSocket,想到哪說哪。git

  和comet相比github

  相比comet技術,websocket不只節約了header的問題(websocket的head信息只有短短的2個字節)。更加劇要的是是通訊的穩定性,comet在遇到網絡問題以後,想要在不刷新頁面的狀況下恢復通訊,很是困難,而websocket中提供了onclose函數來處理斷開網絡後的狀況,這爲咱們與服務器的通訊提供了可靠的保障。在、github上有一個js庫 web

 (https://github.com/joewalnes/reconnecting-websocket)就是經過這種方式來處理websocket斷網重連。瀏覽器

  固然這麼好用的websocket也不是沒有它的問題,websocket目前來看最大的問題是瀏覽器的支持(幸虧大部分的服務器軟件在比較新的版本中都已經支持了websocket),ie直到10纔開始支持這種協議,並且每一個瀏覽器最近在升級瀏覽器的時候,都會對websocket作出細微的調整。並且,想象你打開一個頁面,當這個頁面打開websocket鏈接而且執行一個內部IP地址的端口掃描,若是端口掃描發現了內部網絡上發現了一個開啓的80端口,一個隧道就可能經過你的瀏覽器創建。這樣作極可能最終繞過防火牆,而且容許訪問內部內容。因此安全問題,也是websocket如今面臨的一大隱患。安全

  WebSocket是HTML5出的協議,也就是說HTTP協議沒有變化,或者說不要緊,但HTTP是不支持持久鏈接的(長鏈接,循環鏈接的不算)。服務器

首先HTTP有 1.1 和 1.0 之說,也就是所謂的 keep-alive ,把多個HTTP請求合併爲一個,可是 Websocket 實際上是一個新協議,跟HTTP協議基本沒有關係,只是爲了兼容現有瀏覽器的握手規範而已,也就是說它是HTTP協議上的一種補充。有交集,可是並非所有。websocket

  另外Html5是指的一系列新的API,或者說新規範,新技術。Http協議自己只有1.0和1.1,並且跟Html自己沒有直接關係。通俗來講,你能夠用HTTP協議傳輸非Html數據,就是這樣。再簡單來講,層級不同。網絡

   WebSocket的協議是持久化的,而HTTP是非持久化的協議。socket

   今天說到這裏,關於WebSocket的下次咱們接着聊。www.goeasy.io 這家是專門作WebSocket的,有興趣能夠關注一下。函數

相關文章
相關標籤/搜索