我正在学习有关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.io
packet type(engine.io
是抽象传输层),意味着它是一个“消息”包; “ 2”是socket.io
packet type,表示它是“事件”消息。
如果您希望能够使用此协议,则可能应该使用socket.io
client,而不是尝试使用原始的WebSocket。
关于javascript - Websockets数据困惑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/41314036/