看看socket.io

第三版的Engine.io 協議git

來看一下 Engine.io 會話github

    1 建立一個會話鏈接到Engine.io使用 URL
web

    2 當鏈接 open 的時候,server會響應一下JSON-encoded 握手數據:json

            。 sid     會話ID(string)服務器

            。 upgrades    會話升級得字符串(Array of String)websocket

            。 pingTimeout     Server配置的ping超時時間
session

    3 客戶端發送ping 服務器端要發送pong 響應框架

    4 客戶端和服務器端能夠隨意交換消息包。socket

    5 Polling transports 能夠發送一個「close」 關閉socket。由於他老是「opening」 and 「closing」oop


URLs

    一個 Engine.io url的組成:

        /engine.io/[?]

      1 engine.io pathName的更改取決於使用者使用的 更高級別的框架。

      2  還有四個保留的query string  :

            。 transport 鏈接協議的名稱

            。 j  若是transport 是 polling , JSONP響應是必須的, j 必須設置爲JSONP的響應索引。

            。 sid 若是客戶端提供了session Id, 那麼query string上就必須有

            。 b64  若是不支持xhr2, b64=1 就表示server端的binary data 發送的是base64 編碼的數據。

       

Encoding 

    編碼的包裏面包含兩部分

            packet

            payload

  Packet

        這是一個UTF-8編碼的string or binary data。

        Stirng  <packet type id>[<data>]  example  2probe

        binary data: 當咱們發送二進制數據的時候 type id 要是第一個字節, 剩下是實際的內容 4|0|1|2|3|4|5

        

    packet type id:

        0 open  向服務端發送一個建立新的傳輸鏈接

        1 close  關閉當前的傳輸協議, 但並不關閉當前的socket 鏈接

        2 ping 發送ping 包  example 2probe

        3 pong 發送pong 包 example 3probe

        4 message 表示發送的是消息

            example server 發送 4HelloWorld

                           client 接收消息並回調 socket.on('message', function(data) {console.log(data)})

        5  upgrade 

                在服務器和客戶端切換傳輸協議以前, 根據upgrade 發送的協議測試,若是成功就切換新傳輸協議

        6 noop

            主要使用在輪詢升級到websocket時

            example

                1 client 建立新的鏈接和傳輸協議

                2 client send 2probe

                3 server send 3probe

                4 client send 5

                5 server 清理和關閉舊的傳輸協議,並切換到新的傳輸協議       


Payload 

    由一組一組的<length1>:<packet1>這樣的包組成, 不支持xhr2.

    

Transport

    支持的傳輸協議

        websocket

        flashsocket

        polling

            jsonp

            xhr

    https://github.com/socketio/engine.io-protocol

相關文章
相關標籤/搜索