ProgressEvent.SOCKET_DATA在60秒内不会触发


ProgressEvent.SOCKET_DATA does not fire for 60 seconds?

我试图将我的Flash游戏连接到TCP服务器,这是托管在我自己的机器上(出于开发目的)。我已经成功地在PHP中创建了一个TCP流:

<?php
$port=<some number>;
$server=<some local vhost>;
$socket=@stream_socket_server("tcp://$server:$port", $errno, $errstr);
$conn = stream_socket_accept($socket);
while($conn){
  $foo=fgets($conn);
  fwrite($conn, $foo);
}
下面是我写的Actionscript代码:
// import statements not included
public var socket:Socket=new Socket;
public var server:String="HIDDEN";
public var port:uint=HIDDEN;
public function connectSocket():void
{
  socket.connect(server,port);
  socket.addEventListener(ProgressEvent.SOCKET_DATA,onSocketData);
  socket.addEventListener(Event.CONNECT,onSocketConnect);
}
public function onSocketConnect(event:Event):void
{
  trace("CONNECT at "+new Date().toUTCString());
  socket.writeUTF("Foo");socket.flush();
}
public function onSocketData(event:ProgressEvent):void
{
  trace("PROGRESSEVENT at "+new Date().toUTCString());
  trace("RESPONSE FROM SEVER: "+socket.readUTF()+" at "+new Date().toUTCString());
}

然而,在运行这个程序时,我得到:

[trace] CONNECT at Wed Jul 30 14:54:27 2014 UTC
[trace] PROGRESSEVENT at Wed Jul 30 14:55:27 2014 UTC
[trace] RESPONSE FROM SEVER: Foo at Wed Jul 30 14:55:27 2014 UTC

通常正好是60秒,但有一两次时间会稍长一些。服务器托管在我自己的机器上,连接到我自己的机器不应该花60秒,对吧?

消息需要以换行符('n)结束,以便正确刷新。所以代码中的这行应该是:

socket.writeUTF("Foo'n");

代替:

socket.writeUTF("Foo");