Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 套接字消息似乎落后一条_Actionscript 3_Socket.io_Flashsocket - Fatal编程技术网

Actionscript 3 套接字消息似乎落后一条

Actionscript 3 套接字消息似乎落后一条,actionscript-3,socket.io,flashsocket,Actionscript 3,Socket.io,Flashsocket,我为这个模糊的问题标题道歉,但我想不出更好的方式来描述这个问题 我正在使用连接到socket.io服务器() 一切(连接、握手、协议升级)似乎都正常工作,但当开始发送/接收消息时,我注意到一个奇怪的趋势:对我的消息的所有响应都落后于1 我能举的最基本的例子是,在我收到一个乒乓球之前,我必须发送两个乒乓球,而我收到的乒乓球实际上是对第一个乒乓球的响应 一个更详细的示例:我发送一条带有房间ID的消息。此消息应以“房间ID已激活”的形式接收响应。在服务器发送另一条消息之前,我不会收到该响应 我可以强制

我为这个模糊的问题标题道歉,但我想不出更好的方式来描述这个问题

我正在使用连接到socket.io服务器()

一切(连接、握手、协议升级)似乎都正常工作,但当开始发送/接收消息时,我注意到一个奇怪的趋势:对我的消息的所有响应都落后于1

我能举的最基本的例子是,在我收到一个乒乓球之前,我必须发送两个乒乓球,而我收到的乒乓球实际上是对第一个乒乓球的响应

一个更详细的示例:我发送一条带有房间ID的消息。此消息应以“房间ID已激活”的形式接收响应。在服务器发送另一条消息之前,我不会收到该响应

我可以强制服务器发送另一条消息,方法是在房间ID消息后面加上PING。这会触发从服务器发送的PONG,但我在客户端收到的唯一消息是“房间ID已激活”消息


我感觉问题出在
FlashSocket.IO
库中的某个地方,但我不确定应该在哪里查找。我知道服务器正在发送它应该发送的所有消息,因为我有一个使用socket.io客户端用JavaScript编写的测试应用程序,它可以按预期工作。

我想到的第一个问题是没有得到正确的“包结束”。所以您得到了一个响应,但它并没有转换为真正的响应,而是在客户机内部缓冲。当你得到第二个的时候,它会设法解析第一个,并缓冲第二个。目前我无法测试它,我稍后会做,但最好的办法是尝试在
WebSocket.as
中调试
onSocketData
,然后精确地检查您从服务器发送的内容。祝你好运这是原始repo(FlashSocket.IO的来源)中的一个问题:Andrey,我也有同样的想法,所以我在
WebSocket.onSocketData
中放置了一个断点和跟踪语句,但我没有看到任何迹象表明它正在接收/缓冲数据。首先将断点放在第308行(
if(headerState==4){
)修改缓冲区。下一步-318(
if(frame){
-在没有帧时检查-这意味着它将进入缓冲区。记录发生的情况。我实际上在第295行(SocketData的第一行)放置了一个断点,在我发送房间ID后唯一进入的是“6”(noop),我假设这是对
FlashSocket
从服务器收到
3probe
消息时自动发送的“5”的响应。我真的希望这不是FlashSocketIO库和服务器上的socket.io版本(1.3.5)之间的某种形式的不兼容