套接字在AS3中自动断开

时间:2012-03-11 10:28:15

标签: actionscript-3 sockets serversocket keep-alive

我在as3中创建了一个Socket和一个ServerSocket对象,然后我使用connect方法连接了套接字,传递给它一个主机和一个端口。此外,我使ServerSocket对象侦听来自我刚刚创建的套接字以外的套接字的传入连接。当ServerSocket检测到连接并开始接收数据时,套接字对象将自动断开连接。所以我想知道如何在socket对象中保持连接活动..

1 个答案:

答案 0 :(得分:3)

我将此作为答案发布,而不仅仅是将此问题作为副本引用,因为您的问题与我将在此处引用的问题和答案不完全相同。我链接的答案提供的资源可以帮助您了解连接套接字背后的安全模型,我认为这是问题所在:

air 2.6 serversocket and actionscript 3 socket connection

链接资源的摘录,演示了将政策文件传递到连接套接字的“握手”:

private function handshakeHandler( event:ProgressEvent ):void
{
    var socket:Socket = event.target as Socket;

    //Read the message from the socket
    var message:String = socket.readUTFBytes( socket.bytesAvailable );
    logCallback( "Received: " + message);
    if( message == "" )
    {
        var policy:String = '\x00';
        socket.writeUTFBytes( policy );
        socket.flush();
        socket.close();
        logCallback("Sending policy: " + policy);
    } else if ( message == "BEGIN" )
    {
        socket.removeEventListener( ProgressEvent.SOCKET_DATA, handshakeHandler );
        socket.addEventListener( ProgressEvent.SOCKET_DATA, socketDataHandler );
        socket.writeUTFBytes( "READY" );
        socket.flush();
    } 
}
  

此示例中使用的策略文件是:

<cross-domain-policy>
    <allow-access-from domain="*" to-ports="8087" />
    </cross-domain-policy>\x00