Sal*_*ali 12 websocket socket.io socket.io-1.0
当我使用本机websocket API时,我只能在chrome控制台中看到有关sockts的有效负载:

但是当我使用socket.io和他们的emit事件时,我可以在实际有效载荷之前看到一些奇怪的数字.我确实理解颜色意味着您要么发送或接收数据,但这些数字42, 3, 2, 430, 420, 5意味着什么.
有没有地方我可以获得这些数字的完整列表和描述?

生成它的代码有点大,所以我只发布小片段.
客户端总是这样:
socket.emit('joinC', room, function(color){ ... });
服务器端看起来像这样:
io.sockets.in(room).emit('moveS', {...});
Mr.*_*rus 20
我知道你刚才问过,但这些信息留给正在研究的人。
我在 2.3.0 (socket.io) 和 3.4.2 (engine.io) 版本中进行了逆向工程分析,得到以下结果:
第一个数字是 engine.io 的通信类型,使用枚举器:
| 钥匙 | 价值 |
|---|---|
| 0 | “打开” |
| 1 | “关闭” |
| 2 | “平” |
| 3 | “乒乓” |
| 4 | “信息” |
| 5 | “升级” |
| 6 | “noop” |
第二个数字是 socket.io 的动作类型,使用枚举器
| 钥匙 | 价值 |
|---|---|
| 0 | “连接” |
| 1 | “断开” |
| 2 | “事件” |
| 3 | “确认” |
| 4 | “错误” |
| 5 | “BINARY_EVENT” |
| 6 | “BINARY_ACK” |
还有其他可以传递的可选信息,例如命名空间和 ID,但我不会深入讨论该部分。
在这些代码之后,他需要一个 Json 数组,其中索引 0 是事件的名称,索引 1 是参数。
所以指令42["moveS",{"from":"g1", "to", "f3"}]是engine.io(4)的消息,是socket.io(2)的事件,它将发出“moveS”动作,将JSON{"from": "g1", "to", "f3"}作为参数传递(实际上JSON.Parse({"from": "g1", "to", "f3"}))。
希望这可以帮助。=D
Websockets允许您通过全双工通信通道来回发送数据.
另一方面,Socket.IO是一个实时应用程序框架,它使用websockets作为传输添加功能,如命名空间连接,房间,回退到其他传输等.要构建所有这些功能,交换前后的消息必须包含一些语义,以便Socket .IO知道它们的含义(即它是什么类型的消息,事件,错误等)以及如何处理它们.为此,它使用一种协议,用一些识别它的语义的代码构成消息.这就是你对这些数字所看到的.
不幸的是,Socket.IO文档非常简洁,很难准确理解这些代码是如何组合和解析的.为了得到它们的确切含义,我认为需要查看Socket.IO源代码.
从socket.io Github 编辑编辑:
这在socket.io-parser和engine.io-parser中处理,它们分别是socket.io-protocol和engine.io-protocol的实现.您可以在协议描述为socket.io 这里和engine.io 这里.
在查看通过传输发送的实际数据时,这些文档中的编码部分很有用.socket.io-protocol处理元数据的编码,如enginepaes到engine.io-protocol可处理格式.
| 归档时间: |
|
| 查看次数: |
3634 次 |
| 最近记录: |