我正在学习有关websocket的信息,并试图使用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状态。

关于我应该怎么做才能获得理想的结果的任何建议?

最佳答案

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

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

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

关于javascript - Websockets数据困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41314036/

10-11 05:54
查看更多