我正在尝试将我的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-密钥:OCZu2AgYt0WgBcLFRV5EyQ==
产地:*
Sec-WebSocket版本:13
套接字断开连接关闭
只有我的handleWebSocketClosed
方法被激发,我的handleWebSocketOpen
从未被激发(奇怪...)。
我可以用pur javascript连接服务器,所以我知道这不是服务器问题。
在GitHub的解释项目中我可以读到:
此客户端无法与部署在Internet上的draft-75或draft-76/-00服务器一起使用。它仅适用于最新的RFC 6455标准
我不知道这是不是我连接失败的原因...
这是一种用as 3连接到WebSocket服务器的方法吗?
谢谢,为我糟糕的英语道歉
1条答案
按热度按时间93ze6v8z1#
看一下html5 Websocket with SSL,似乎尝试通过SSL连接需要进行一些修改以使其使用flash.net.SecureSocket。您可能需要重写一些AS3WebSocket以使用该套接字,而不是flash.net.Socket。