将air / flash应用程序连接到websocket服务器

时间:2017-08-17 07:37:55

标签: actionscript-3 flex websocket air

我正在尝试将我的空中应用程序连接到不在我的域中的websocket服务器。我在GitHub上找到了这段代码:https://github.com/theturtle32/AS3WebSocket但我无法连接到服务器。

这是我的代码:

<fx:Script>
    <![CDATA[
        import com.worlize.websocket.WebSocket;
        import com.worlize.websocket.WebSocketErrorEvent;
        import com.worlize.websocket.WebSocketEvent;

        private var websocket:WebSocket;

        private function handleCreationComplete():void 
        {
            websocket = new WebSocket("wss://echo.websocket.org", "*");

            websocket.debug = true;

            websocket.addEventListener(WebSocketEvent.CLOSED, handleWebSocketClosed);
            websocket.addEventListener(WebSocketEvent.OPEN, handleWebSocketOpen);
            websocket.addEventListener(WebSocketEvent.MESSAGE, handleWebSocketMessage);
            websocket.addEventListener(IOErrorEvent.IO_ERROR, handleIOError);
            websocket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, handleSecurityError);
            websocket.addEventListener(WebSocketErrorEvent.CONNECTION_FAIL, handleConnectionFail);

            websocket.connect();
        }

        private function handleIOError(event:IOErrorEvent):void 
        {
            trace("error");
        }

        private function handleSecurityError(event:SecurityErrorEvent):void 
        {
            trace("sec error");
        }

        private function handleConnectionFail(event:WebSocketErrorEvent):void 
        {
            trace("connection error");
        }

        private function handleWebSocketClosed(event:WebSocketEvent):void 
        {
            trace("close");
        }

        private function handleWebSocketOpen(event:WebSocketEvent):void 
        {
            trace("connected !");
        }

        private function handleWebSocketMessage(event:WebSocketEvent):void 
        {
            trace("message !");
        }


    ]]>
</fx:Script>

  

在端口443上连接到echo.websocket.org   套接字连接启动SSL / TLS GET / HTTP / 1.1

     

主持人:echo.websocket.org

     

升级:websocket

     

连接:升级

     

Sec-WebSocket-Key:OCZu2AgYt0WgBcLFRV5EyQ ==

     

原产地:*

     

Sec-WebSocket-Version:13

     

套接字已断开连接   靠近

只触发了我的handleWebSocketClosed方法,我的handleWebSocketOpen永远不会被解雇(奇怪......)。

我可以使用pur javascript连接服务器,所以我知道这不是服务器问题。

在GitHub解释项目中,我可以阅读:

  

此客户端无法使用draft-75或draft-76 / -00服务器   部署在互联网上。它仅适用于最新的RFC6455   标准

我不知道这是否是我无法连接的原因......

这是使用as3连接到websocket服务器的方法吗?

谢谢,抱歉我的英语不好

1 个答案:

答案 0 :(得分:1)

看看html5 Websocket with SSL,似乎尝试通过SSL连接需要进行一些修改才能使用flash.net.SecureSocket。您可能需要重写一些AS3WebSocket以使用它而不是flash.net.Socket。