文档章节

看看socket.io

手绘灿烂
 手绘灿烂
发布于 2015/08/17 16:46
字数 560
阅读 550
收藏 1
点赞 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

© 著作权归作者所有

共有 人打赏支持
手绘灿烂
粉丝 7
博文 37
码字总数 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
关键七步,用Apache Spark构建实时分析Dashboard

问题描述 电子商务门户希望构建一个实时分析仪表盘,对每分钟发货的订单数量做到可视化,从而优化物流的效率。 解决方案 解决方案之前,先快速看看我们将使用的工具: Apache Spark – 一个通...

勿忘初心321
2016/11/23
20
0
npm install socket.io

正确安装nodejs后,再安装socket.io; 用的npm install socket.io命令 以下是报错 C:Program Filesnodejs>npm install socket.io - > ws@0.5.0 install C:Program Filesnodejsnodemodulessoc......

wklc2014
2015/06/01
3.7K
6
socket.io 实现在线聊天室

效果图.gif websocket工作机制 WebSocket协议是基于TCP的一种新的网络协议。它实现了浏览器与服务器全双工(full-duplex)通信——允许服务器主动发送信息给客户端。websocket链接建立后,服务...

TokenYang
2017/11/13
0
0
nodejs socket.io问题

我之前也不知道用的那个版本的socket.io 是这样写的 var app = require('express')(); var http = require('http').Server(app); var io = require('socket.io')(http); 后来我换成socket.io......

vs-wilson
2017/01/04
116
0
Express+Socket.io 404,400解决方案

404错误: 意思是在你js脚本中找不到提供websocket的服务,后端没有开启相应的服务。 var app=require('express');var server=require('http').createServer(app);var socket=require('sock...

quanwei9958
2016/01/06
40
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

Android LogUtil 日志优化 调试的时候打印 点击跳转

打印日志的时候,可以点击跳转 LogUtil.java public class LogUtil { private static boolean IS_DEBUG = BuildConfig.DEBUG; public static void i(String tag, String message) {......

Jay_kyzg
17分钟前
0
0
人工智能你必须掌握的32个算法(二)归并排序算法

归并排序(MERGE-SORT)是建立在归并操作上的一种有效的排序算法,该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子...

木头释然
19分钟前
0
0
第十四章NFS服务搭建与配置

14.1 NFS介绍 NFS介绍 NFS是Network File System的缩写;这个文件系统是基于网路层面,通过网络层面实现数据同步 NFS最早由Sun公司开发,分2,3,4三个版本,2和3由Sun起草开发,4.0开始Netap...

Linux学习笔记
42分钟前
1
0
流利阅读笔记27-20180716待学习

生了娃照样能打,两位母亲温网会师 Lala 2018-07-16 1.今日导读 现今在生儿育女后回归事业的母亲们已经非常多见,但是很少有人想到,以高强度运动与竞争激烈为特色的竞技体育项目也会有 work...

aibinxiao
43分钟前
5
0
Guava 源码分析(Cache 原理【二阶段】)

前言 在上文「Guava 源码分析(Cache 原理)」中分析了 Guava Cache 的相关原理。 文末提到了回收机制、移除时间通知等内容,许多朋友也挺感兴趣,这次就这两个内容再来分析分析。 在开始之前...

crossoverJie
56分钟前
0
0
OSChina 周一乱弹 —— 如果是你喜欢的女同学找你借钱

Osc乱弹歌单(2018)请戳(这里) 【今日歌曲】 @guanglun :分享Michael Learns To Rock的单曲《Fairy Tale》 《Fairy Tale》- Michael Learns To Rock 手机党少年们想听歌,请使劲儿戳(这...

小小编辑
今天
669
19
NNS域名系统之域名竞拍

0x00 前言 其实在官方文档中已经对域名竞拍的过程有详细的描述,感兴趣的可以移步http://doc.neons.name/zh_CN/latest/nns_protocol.html#id30 此处查阅。 我这里主要对轻钱包开发中会用到的...

暖冰
今天
0
0
32.filter表案例 nat表应用 (iptables)

10.15 iptables filter表案例 10.16/10.17/10.18 iptables nat表应用 10.15 iptables filter表案例: ~1. 写一个具体的iptables小案例,需求是把80端口、22端口、21 端口放行。但是,22端口我...

王鑫linux
今天
0
0
shell中的函数&shell中的数组&告警系统需求分析

20.16/20.17 shell中的函数 20.18 shell中的数组 20.19 告警系统需求分析

影夜Linux
今天
0
0
Linux网络基础、Linux防火墙

Linux网络基础 ip addr 命令 :查看网口信息 ifconfig命令:查看网口信息,要比ip addr更明了一些 centos 7默认没安装ifconfig命令,可以使用yum install -y net-tools命令来安装。 ifconfig...

李超小牛子
今天
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部