读取数据后是否需要Socket.flush()?

时间:2010-12-10 21:17:09

标签: flex flash actionscript-3 sockets

我遇到了一个项目问题,该项目使用Smartfox Server密集使用套接字。有时,使用Chrome时,套接字数据似乎包含以前的数据(来自SFS的消息是双重的)。

无论如何,我的问题很简单;无论何时从套接字读取数据,你应该在之后调用flush()方法吗?我知道强烈建议您在发送数据时这样做。

....
socket.addEventListener(ProgressEvent.SOCKET_DATA, handleSocketData);
....

private function handleSocketData(evt:Event):void
{
    var o:Object = socket.readObject();
    ....
    socket.flush(); // is that necessary???
}

3 个答案:

答案 0 :(得分:2)

答案 1 :(得分:0)

不,您应该阅读回复数据,例如 -

  while ( socket.bytesAvailable ) {
        var data:String = socket.readUTF();
        Alert.show(data);
  }

答案 2 :(得分:0)

我们也在Flash中使用Socket和SFS服务器。我们从不在读取后刷新套接字,我们只在写入其字节缓冲区后才刷新它(并且必须这样做)。