Senden von Daten von flash zu node.js server mit socket.io
Habe ich eine einfache Steckdose.io-server in node.js das hört sich ja ein Stecker im port 81 (zum Beispiel)
Ich habe kein problem mit der Anbindung und übergabe von Daten zwischen den clients in Javascript geschrieben
Aber nach viel versucht, ich kann nicht mein Flash-app mit dem server verbinden und Daten an Sie
(Ich habe einige Beispiele in die web -, aber alle von Ihnen sind auf flex basiert und die Verwendung von Klassen, die nicht Teile des basic-AS3-Bibliotheken)
wenn ich versuche, eine Verbindung zu der Buchse mit einem XMLSocket - ich bekomme Sicherheits-Sandbox-Verletzung-Fehler - ich weiß, dass ich brauche, um das laden der policy-Datei (die wohl zur Verfügung mit Steckdose.io)
aber ich kann nicht es tun, zu verwalten
dies ist mein flash-code:
Security.loadPolicyFile("http://127.0.0.1:81/crossdomain.xml");
socket = new XMLSocket("127.0.0.1", 81);
socket.addEventListener(Event.CONNECT, onConnect);
socket.addEventListener(IOErrorEvent.IO_ERROR, onError);
socket.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityEvent);
socket.addEventListener(DataEvent.DATA, onData);
und die server-side-code ist
var app = require('http').createServer(function (req, res) {...})
, io = require('socket.io').listen(app, { log: true })
, fs = require('fs')
app.listen(81);
io.sockets.on('connection', function (socket) {
console.log("connection "+socket.id);
socket.on("message",function(data){
console.log("data: "+data);
});
socket.on("data",function(d){
console.log('data from flash: ',d);
});
socket.on('disconnect', function (socket) {
console.log("disconnect");
});
});
und meine crossdomain.xml ist:
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
<site-control permitted-cross-domain-policies="master-only"/>
<allow-access-from domain="*" to-ports="*"/>
</cross-domain-policy>
Danken Ihnen sehr für Ihre Zeit!
Habe ich, aber immer noch der Blitz auslösen eines Fehlers:
Request for resource at xmlsocket://127.0.0.1:81 by requestor from XXXXX.swf is denied due to lack of policy file permissions
Ihre
loadPolicyFile()
Anruf nicht wies in einem policy-Datei. Versuchen Security.loadPolicyFile("http://127.0.0.1:81/crossdomain.xml")
.versucht es - es ist das laden der policy-Datei, aber ich habe immer noch den Fehler aus meinem vorherigen Kommentar (bevor ich Hinzugefügt
Security.loadPolicyFile(...)
hatte ich eine andere Fehlermeldung - was bedeutet, dass die flash Lesen kann die policy-Datei, aber die Politik ist nicht erlaubt genuggeändert as3-code, die aktualisiert + Hinzugefügt crossdomain.xml Inhalt. vielleicht ist das problem dort
InformationsquelleAutor Yaron U. | 2013-01-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für unser letztes Projekt verwendeten wir FlashSocket.IO, arbeitete wie ein Charme.
Mussten wir geringfügige Anpassungen an der server-Seite (d.h. stellen Sie sicher, dass Steckdose.io-Listener für das policyfile auf port 843, anstatt 10843) und aktivieren Sie die flashsocket transport, aber die Kommunikation war ein Kinderspiel.
HINWEIS: diese Konfiguration erfordert node.js als root ausführen!
io.set('transports', ['websocket', 'flashsocket']);
- Danke trotzdem 🙂Ah ja, du hast Recht...ich wurde vermisst, dass die flashsocket transport ist standardmäßig deaktiviert, sorry. Eingestellt meine Antwort dementsprechend
übrigens - diese Bibliothek funktioniert nicht ohne die flex-Bibliotheken (mx) github.com/simb/FlashSocket.IO/blob/0.7.x/src/com/pnwrain/... es verwendet
mx.collections.ArrayCollection
undmx.utils.URLUtil
Ja, meine Kollegin hatte zu hacken, um ein bisschen mit der Quelle zu machen, unabhängig von flex. Aber ich kann Ihnen nicht alle details, da er im Urlaub :/
Ich Tat es auch, indem die
URLUtil
source-code von meinem Projekt 🙂InformationsquelleAutor schaermu
Versuchen diese Lösung (die Sie benötigen, um den setup-socket policy server zusätzlich zu den Spiel-server auf dem port 843)
BTW: bei der Benutzung von socket-verwenden Sie immer die url wie
xmlsocket://host:port
(für port 843 flash lädt policy-Datei automatisch) anstatthttp://host:port
Hexe ist nur für http-Anfragen.InformationsquelleAutor fsbmain