码迷,mamicode.com
首页 > 其他好文 > 详细

看看socket.io

时间:2015-08-17 17:33:57      阅读:127      评论:0      收藏:0      [点我收藏+]

标签:

第三版的Engine.io 协议

来看一下 Engine.io 会话

    1 创建一个会话连接到Engine.io使用 URL

    2 当连接 open 的时候,server会响应一下JSON-encoded 握手数据:

            。 sid     会话ID(string)

            。 upgrades    会话升级得字符串(Array of String)

            。 pingTimeout     Server配置的ping超时时间

    3 客户端发送ping 服务器端要发送pong 响应

    4 客户端和服务器端可以随意交换消息包。

    5 Polling transports 可以发送一个“close” 关闭socket。因为他总是“opening” and “closing”


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

看看socket.io

标签:

原文地址:http://my.oschina.net/u/572499/blog/493569

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!