0

我正在尝试将标准 PONG 帧发送到服务器,并将此 PONG 帧用作 RFC6455 中描述的心跳机制。

我成功地将 PONG 帧发送到服务器,但我有点坚持从服务器端接收响应。

我正在尝试这样做:

tlsSocket.addEventListener(ProgressEvent.SOCKET_DATA, onSocketData);


private function onSocketData(event:ProgressEvent):void
{
//logic goes here
}

问题是当收到 ACK 帧以响应 PONG 帧时,不会调用 onSocketData()(但是,在 Web 套接字启动时会调用此方法)。触发 SOCKET_DATA 时是否有任何限制?

有人可以指出我的错误吗?谢谢!

4

1 回答 1

1

AS3 套接字 API 不会为您提供任何低级信息。Afaik 这种信息甚至没有被 OS 套接字 API 公开。

当有任何字节可从套接字读取时,将简单地调用 SOCKET_DATA -> 套接字读取缓冲区不为空。我认为低级别然后 AS3 驱动一个事件循环,该循环可能使用 select 或 epoll 来侦听 OS 套接字。一旦报告有可供读取的字节,就会调用 SOCKET_DATA 事件,以便您可以读取它们。

但是,如果你的 PONG 被承认了,你为什么会对它感兴趣呢?它对您没有任何用处。只需等待客户端下一个 PING 或数据包。如果在传输过程中出现错误,AS3 将通过 IO_ERROR 或 CLOSE 事件通知您。如果您想利用 websocket PING/PONG 机制来监视客户端,我只需使用一个计时器,该计时器在连接时启动并在接收到每个 PING 时重置。如果计时器超时,则关闭与客户端的连接。

于 2013-10-16T20:56:58.120 回答