文档章节

看看socket.io

手绘灿烂
 手绘灿烂
发布于 2015/08/17 16:46
字数 560
阅读 556
收藏 1

第三版的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

© 著作权归作者所有

共有 人打赏支持
手绘灿烂
粉丝 7
博文 53
码字总数 20728
作品 0
朝阳
程序员
用 Socket.io 处理 NodeJS 和 AngularJS 间的 tweet

这篇文章里面,我们学习一下,怎么用 Socket.io 来流化处理一些旧金山周边的 tweet,在 nodejs 应用和 angularjs 应用之间。我们为了从 nodejs 应用拿到 tweet, 我们用的是 Twitter API 的 ...

开源中国匿名会员
2014/06/19
0
0
HTML5树组件延迟加载技术实现

HT for Web的HTML5树组件有延迟加载的功能,这个功能对于那些需要从服务器读取具有层级依赖关系数据时非常有用,需要获取数据的时候再向服务器发起请求,这样可减轻服务器压力,同时也减少了...

xhload3d
2015/11/11
0
0
HT for Web的HTML5树组件延迟加载技术实现

HT for Web的HTML5树组件有延迟加载的功能,这个功能对于那些需要从服务器读取具有层级依赖关系数据时非常有用,需要获取数据的时候再向服务器发起请求,这样可减轻服务器压力,同时也减少了...

xhload3d
2015/05/03
0
0
Node.js下基于Express + Socket.io 搭建一个基本的在线聊天室

Node.js下基于Express + Socket.io 搭建一个基本的在线聊天室 一、聊天室简单介绍   采用nodeJS设计,基于express框架,使用WebSocket编程之 socket.io机制。聊天室增加了 注册登录 模块 ...

蜗牛奔跑
2017/10/18
0
0
基于 WebSocket 实现 WebGL 3D 拓扑图实时数据通讯同步(一)

今天没有延续上一篇讲的内容,穿插一段小插曲,WebSocket 实时数据通讯同步的问题,今天我们并不是很纯粹地讲 WebSocket 相关知识,我们通过 WebGL 3D 拓扑图来呈现一个有趣的 Demo。接下来我...

xhload3d
2016/07/25
177
0

没有更多内容

加载失败,请刷新页面

加载更多

wait()被notify()后,接着执行wait()后面的语句

wait()被notify()后,接着执行wait()后面的语句

noteman
21分钟前
0
0
Ubuntu集群-使用MAAS开始裸机安装

Ubuntu使用MAAS装机的七个步骤。 1、Setup your hardware You need one small server for MAAS and at least one server which can be managed with a BMC. It is recommended to have the M......

openthings
33分钟前
2
0
OSX | SafariBookmarksSyncAgent意外退出解决方法

1. 启动系统, 按住⌘-R不松手2. 在实用工具(Utilities)下打开终端,输入csrutil disable, 然后回车; 你就看到提示系统完整性保护(SIP: System Integrity Protection)已禁用3. 输入reboot回车...

云迹
今天
4
0
面向对象类之间的关系

面向对象类之间的关系:is-a、has-a、use-a is-a关系也叫继承或泛化,比如大雁和鸟类之间的关系就是继承。 has-a关系称为关联关系,例如企鹅在气候寒冷的地方生活,“企鹅”和“气候”就是关...

gackey
今天
4
0
读书(附电子书)|小狗钱钱之白色的拉布拉多

关注公众号,在公众号中回复“小狗钱钱”可免费获得电子书。 一、背景 之前写了一篇文章 《小狗钱钱》 理财小白应该读的一本书,那时候我才看那本书,现在看了一大半了,发现这本书确实不错,...

tiankonguse
今天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部