我正在学习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状态。
有什么建议我应该做些什么来获得理想的结果?
答案 0 :(得分:1)
您显示的消息数据(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。