【问题标题】:What do these numbers mean in socket.io payload?这些数字在 socket.io 有效负载中意味着什么?
【发布时间】:2014-08-25 05:41:21
【问题描述】:

当我使用本机 websocket API 时,我只能在我的 chrome 控制台中看到一个用于 sockts 的有效负载:

但是当我将 socket.io 与他们的发出事件一起使用时,我可以在实际有效负载之前看到一些奇怪的数字。我知道颜色表示您发送或接收数据,但像 42, 3, 2, 430, 420, 5 这样的数字是什么意思。

有没有什么地方可以得到这些数字的完整列表和描述?

生成它的代码有点大,所以我只发布小sn-ps。

客户端总是这样:

socket.emit('joinC', room, function(color){ ... });

服务器端如下所示:

io.sockets.in(room).emit('moveS', {...});

【问题讨论】:

    标签: websocket socket.io socket.io-1.0


    【解决方案1】:

    我知道您前段时间问过,但信息仍留给正在研究的人。

    我在 2.3.0 (socket.io) 和 3.4.2 (engine.io) 版本中使用逆向工程进行了分析,得到以下结果:

    第一个数字是engine.io的通信类型,使用枚举器:

    Key Value
    0 "open"
    1 "close"
    2 "ping"
    3 "pong"
    4 "message"
    5 "upgrade"
    6 "noop"

    第二个数字是socket.io的动作类型,使用枚举器

    Key Value
    0 "CONNECT"
    1 "DISCONNECT"
    2 "EVENT"
    3 "ACK"
    4 "ERROR"
    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"} 作为参数(实际上@ 987654325@)。

    希望这会有所帮助。 =D

    【讨论】:

    • 这非常有用......只有一个问题:知道我们如何从客户端发送一个 Pong 响应到 Socket.IO 服务器的 Ping 吗?我试过只发送“3”而没有其他数据,但不幸的是这似乎不起作用
    【解决方案2】:

    Websocket 允许您通过全双工通信通道来回发送数据。

    另一方面,Socket.IO 是一个实时应用程序框架,它使用 websockets 作为传输添加功能,如命名空间连接、房间、回退到其他传输等。要构建所有这些功能,来回交换的消息必须带有一些语义以便 Socket.IO 知道它们的含义(即它是什么类型的消息、事件、错误等)以及如何处理它们。为此,它使用protocol 来构建消息,其中包含一些标识其语义的代码。这就是您所看到的这些数字。

    不幸的是,Socket.IO 文档非常简洁,很难准确理解这些代码是如何组合和解析的。要了解它们的确切含义,我认为需要查看 Socket.IO 源代码。

    编辑来自socket.io Github issue

    这是在 socket.io-parser 和 engine.io-parser 中处理的,它们分别是 socket.io-protocol 和 engine.io-protocol 的实现。您可以找到 socket.io here 和 engine.io here 的协议描述。

    查看通过传输发送的实际数据时,这些文档中的编码部分很有趣。 socket.io-protocol 处理元数据的编码,例如将命名空间转换为 engine.io-protocol 可处理格式。

    【讨论】:

    • 如何使用 emit 生成有效消息?只是试图重现,但我给出的所有消息都只是一个简单的消息,没有有效载荷。
    猜你喜欢
    • 2021-09-29
    • 1970-01-01
    • 2020-02-05
    • 1970-01-01
    • 2011-01-17
    • 2020-11-30
    • 2015-09-13
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多