2011-11-22 3 views
-1

J'essaye de faire un client de socket dans FlashAS3 pour mon serveur de socket écrit dans nodejs. J'ai aussi un client d'application mobile qui communique avec lui. Dans AS3 j'ai écrit un code de test qui fonctionne parfaitement lorsque je publie et exécute un fichier Windows EXE mais lors de la publication sur SWF et l'ouverture dans les navigateurs, il ne se connecte pas au serveur. Même tout ce que "les importations" n'aident pas. Code:AS3 XMLSocket fonctionne dans WIN EXE mais pas sur 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; 
} 

J'ai été googler et trouvé conseille de faire un fichier crossdomain.xml mais il ne fonctionne pas, ce qu'il est:

<?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> 
+0

Le problème était que j'ai ouvert le swf \ html dans le navigateur dans le domaine localhost comme file: // localhost/C:/Users/ Quand je Transféré au serveur - il est arrêté à défaut mais il ne peut pas recevoir des messages à partir du serveur – user1060667

Répondre

1

Essayez d'appeler Security.allowDonain('*'); avant var xmlSocket:XMLSocket = new XMLSocket();.

+0

Merci! Le problème était que SWF était situé sur mon PC, pas sur le serveur. Mais un nouveau problème est apparu - après la connexion au serveur, il se déconnecte immédiatement ... – user1060667

0

look pour Security.loadPolicyFile

syntaxe spéciale permet des fichiers de stratégie à récupérer directement à partir d'un serveur XMLSocket. Par exemple: System.security.loadPolicyFile ("xmlsocket: //adobe.com: 414");

+0

Merci! Le problème était que SWF était situé sur mon PC, pas sur le serveur. Mais un nouveau problème est apparu - après la connexion au serveur, il se déconnecte immédiatement ... – user1060667

Questions connexes