Я пытаюсь сделать сокет-клиент во FlashAS3 для моего сокет-сервера, написанного на nodejs. У меня также есть клиент мобильного приложения, который связывается с ним.
В AS3 я написал тестовый код, который отлично работает, когда я публикую и запускаю файл Windows EXE, но при публикации в SWF и открытии в браузерах он не подключается к серверу. Даже все, что «импортирует», не помогает. Код:
import flash.system.Security;
import flash.net.XMLSocket;
import flash.events.Event;
import flash.events.IOErrorEvent;
import flash.events.SecurityErrorEvent;
import flash.events.DataEvent;
var xmlSocket:XMLSocket = new XMLSocket();
xmlSocket.connect("myserverhost", 88);
xmlSocket.addEventListener(DataEvent.DATA, onIncomingData);
send_btn.addEventListener(MouseEvent.CLICK, clickHandler);
disconnect_btn.addEventListener(MouseEvent.CLICK, disconnectHandler);
function clickHandler(event:MouseEvent):void
{
xmlSocket.send(input_txt.text);
input_txt.text = "";
}
function disconnectHandler(event:MouseEvent):void
{
xmlSocket.close();
send_btn.enabled = false;
}
function onIncomingData(event:DataEvent):void
{
var items:Object = JSON.decode(event.data);
for (var index in items) {
trace(index+" => "+items[index]);
}
if(items['hello']){
output_txt.text += items['hello'] + "\n";
}
else if(items['description']){
output_txt.text += items['description'] + "\n";
} else {
output_txt.text += event.data + "\n";
}
output_txt.verticalScrollPosition = output_txt.maxVerticalScrollPosition;
}
Я гуглил и нашел совет сделать файл crossdomain.xml, но он не работает, вот оно:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<allow-access-from domain="*" to-ports="*" secure="false"/>
</cross-domain-policy>