文档章节

看看socket.io

手绘灿烂
 手绘灿烂
发布于 2015/08/17 16:46
字数 560
阅读 566
收藏 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
HT for Web的HTML5树组件延迟加载技术实现

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

xhload3d
2015/05/03
0
0
HTML5树组件延迟加载技术实现

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

xhload3d
2015/11/11
0
0
WebSocket是时候展现你优秀的一面了

在工作中我们开发接触最多的协议莫过于HTTP协议了,近些年H5的很多API和技术已经如雨后春笋般开始渐渐发扬光大了,今天我们就来一起讨论下其中的一个比较有意思的API,WebSocket 首先,在介绍...

chenhongdong
10/22
0
0
Node.js下基于Express + Socket.io 搭建一个基本的在线聊天室

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

蜗牛奔跑
2017/10/18
0
0

没有更多内容

加载失败,请刷新页面

加载更多

控制台打印图片

function dev(){ if (window.console){ console.log("%c\n ", "font-size:100px;background:url('http://gmcyzs.com/resources/images/logo.png') no-repeat"); console.log('%c 深务平台,\......

羊皮卷
11分钟前
0
0
MyBaties的二级缓存

二级缓存介绍 在上文中提到的一级缓存中,其最大的共享范围就是一个SqlSession内部,那么如何让多个SqlSession之间也可以共享缓存呢,答案是二级缓存。 当开启二级缓存后,会使用CachingExec...

嘴角轻扬30
11分钟前
2
0
10.新增博客功能-结束语---《Beetl视频课程》

本期视频实现发布新博客功能 一起学beetl目录:https://my.oschina.net/u/1590490?tab=newest&catalogId=6214598 作者:GK 教程进入了尾声,该讲的知识点基本讲到了,本节课不会讲新的知识点。...

Gavin-King
16分钟前
2
0
SpringBoot项目热部署

IntelliJ IDEA开发工具 1.需要在pom.xml文件中加入以下依赖。 <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-devtools</artifactId> ......

llsydn
17分钟前
1
0
JVM问题排查也不是很难--工具使用

目录 概述 环境准备 工具介绍 远程连接方式 开启JMX 工具远程连接 参考文献 概述 线上环境中,程序越来越慢,一头雾水?遇到程序经常宕机,但找不到原因?排查问题却经常记不住命令? 那是没找到好...

java_龙
21分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部