Websockets数据混淆

时间:2016-12-24 14:17:54

标签: javascript websocket

我正在学习websockets,并尝试使用Chrome开发工具控制台连接并将数据发送到网页游戏。

然而,我遇到了几个问题:

首先,我在网络选项卡中查看收到的数据框。每隔一秒左右,游戏会发送一个数组,在框架标签中如下所示:

42["string", int, int, bool, int]

我不知道为什么数组之前有42个。

其次,我尝试使用以下命令连接到服务器:

var socket = new WebSocket('ws://ws.mywebsite.com/?EIO=3&transport=websocket');

然后我尝试输入以下内容将数据发送到服务器:

socket.send(["string", int, int, bool, int]);

然而,这没有做任何事情,并且在网络选项卡中有一个新的websocket连接被打开。

我也尝试过:

socket.send(42["string", int, int, bool, int]);

正如预期的那样,也没有用。 另一件事是,如果我在打开套接字和发送数据之间等待超过几秒钟,我会收到一个错误,即套接字已经处于CLOSING或CLOSED状态。

有什么建议我应该做些什么来获得理想的结果?

1 个答案:

答案 0 :(得分:1)

您显示的消息数据(42["string", int, int, bool, int])是socket.io消息的典型消息,它使用基于Web套接字(以及其他传输协议)的协议。

“4”是engine.iopacket typeengine.io是抽象传输层),这意味着它是一个“消息”数据包; “2”是socket.io packet type,意思是“事件”消息。

如果您希望能够使用此协议,则应该使用socket.io client,而不是尝试使用原始WebSocket。