老的Websocket介紹

來源:互聯網
上載者:User

  WebSocket通訊協定實現的是基於瀏覽器的原生socket,在用戶端用JS即可輕鬆完成。WebSocket的最大功效就是即時性,可以不用重新整理就可以接收資料,這點和Ajax很像,但是又不同於Ajax,Ajax需要發送請求,而WebSocket不用發請求就可以接受伺服器端的資料。下面介紹一下WebSocket協議:

        WebSocket的協議是很簡單的,這裡我把它分成用戶端和服務端來講。在用戶端,new WebSocket即可執行個體化一個新的WebSocket對象,但其參數略微有一點不一樣,參數格式是這樣的ws://yourdomain:port/path ,

        eg:ws = new WebSocket( “ws://www.zendstudio.net:9108/chat” );)

        WebSocket對象會自動解析這段字串,發送到指定伺服器連接埠,首先執行的是雙方握手(handshake),用戶端發送資料格式類似這樣:

             GET /chat HTTP/1.1Upgrade: WebSocketConnection: Upgrade Host: www.zendstudio.net:9108Origin:
                        http://www.zendstudio.net Cookie:
somenterCookie

        這很是有些類似於http的頭資訊,同樣每行都是以”\r\n”結尾的,上面這段格式無需我們去構造,WebSocket對象會自動發送,對用戶端這是透明的。此時服務端應該返回的資訊是:

             HTTP/1.1 101 Web Socket Protocol HandshakeUpgrade: WebSocket Connection: UpgradeWebSocket-Origin:                          http://www.zendstudio.net WebSocket-Location:
ws://www.zendstudio.net:9108/chat

        從這裡我們太容易看出來,WebSocket協議的握手部分根本就是個類http的協議,所不同的是http每次都會有這樣子的頭資訊互動,這在某些時候不得不顯得很糟糕。而WebSocket只會執行一次這個過程,之後的傳輸資訊就變得異常簡潔了。

        用戶端在握手成功後,會觸發WebSocket對象的onopen事件,告訴用戶端串連已經成功建立了。用戶端的WebSocket對象一共綁定了四個事件:

          1、onopen:串連建立時觸發;

          2、onmessage:收到服務端訊息時觸發;

          3、onerror:串連出錯時觸發;

         4、onclose:串連關閉時觸發;

       有了這4個事件,我們就可以很容易很輕鬆的駕馭WebSocket,並且需要說明的是WebSocket支援位元據的傳輸,因此,它遠不止聊天室應用這麼簡單。

       服務端呢?服務端也是非常簡單的,但是仍然需要注意的問題是,作為伺服器,安全和效能是不可忽略的,除此之外,只管往socket裡面寫資料就可以了,WebSocket的通訊資料全部是以”\x00″開頭以”\xFF”結尾的,無論是服務端發出的資料還是用戶端發送的資料都遵從這個格式,唯一不同的是用戶端的WebSocket對象能夠自動將頭尾去除,獲得主體資料,這就省卻了我們在用戶端處理未經處理資料的必要,真是個體貼周到的對象啊!順便說一句,WebSocket通訊資料的編碼總是UTF-8格式的。好了,WebSocket協議就是這麼簡單。到這裡,寫一個服務端應該不是什麼困難的事情了吧?這僅僅需要一點點socket編程知識,任何語言都可以輕鬆實現。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.