Mit einem Flash-sockel mit Node.js
Habe ich mit gimite /web-socket-js zur Implementierung eines WebSocket-Vergangenheit einfach Chrome und Entwicklung baut der Safari. Ich will Weg von den Ruby-server auf Node.js. Plötzlich funktioniert es nicht im nichts, sondern Chrome.
Ich vermute, dass dies hat zu tun mit der Flash Socket Policy - Datei, die ich implementieren muss. Ich würde gerne diese umzusetzen ist als eine externe Node.js Prozess, damit Sie nicht zu matschig mit der ursprünglichen Anwendung. Ich bin mit dem Knoten-websocket-server für die Implementierung der WebSocket-Protokoll mit Node.js und wieder würde ich lieber nicht Durcheinander mit, dass entweder.
Es schien die einfachste Sache zu tun wäre, um führen Sie flashsocket.js, aber laufen gibt mir die folgende Fehlermeldung:
sys:334
ctor.prototype = Object.create(superCtor.prototype, {
^
TypeError: Object prototype may only be an Object or null
at Function.create (native)
at Object.inherits (sys:334:29)
at Object.<anonymous> (/Users/me/Projects/testing/websocket/node-websocket-server/flashsocket.js:10:16)
at Module._compile (node.js:472:23)
at Module._loadScriptSync (node.js:479:10)
at Module.loadSync (node.js:349:12)
at Object.runMain (node.js:532:24)
at node.js:762:10
Hier laufen wir in die schöne kryptische Fehler Node.js geliebt für.
Meine Frage ist, ist es ein stand-alone-global flash socket policy server, die ich ablaufen kann, entweder Node.js oder eine andere Anwendung? Mein Verständnis ist, dass ich nur brauchen, um es sich auf port 843. Oder gibt es eine andere WebSocket-Bibliothek für Node.js das mit den Flash-Politik, wie die Ruby-server hat?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Flash-policy-Anfragen auch beantwortet werden inline auf der gleichen port wie die WebSockets-service, den Sie bereitstellen. Sehen diese änderung an die Steckdose.IO node.js -Modul. Es fügt eine Verbindung lauschen Sie den server, der antwortet policy server-Anfragen auf den selben port. So dass Sie nicht haben, um etwas laufen auf port 843 (die in der Regel erfordert root-Privilegien).
Alternativ können Sie auch eine sehr einfache (2 Linie) policy-request-server, mit schockiert (vorausgesetzt, Sie sind auf einem *nix-system): http://github.com/kanaka/noVNC/blob/master/docs/flash_policy.txt
Update (Antwort zu @Josh K):
Es ist eine gemeinsame Missverständnis, dass port 843 ist der primäre Speicherort für die flash-policy-Anforderungen und das gleiche-port-Anforderungen sind ein fall-back-und dass Sie langsamer werden aufgrund von timeout. Dies beruht wahrscheinlich auf der meist zitierten
http://www.lightsphere.com/dev/articles/flash_socket_policy.html und auch, weil Adobe die Dokumentation ist schwer aufzuspüren (und zu Lesen). Hier ist die Adobe-Dokumentation, die auf Ihre Sicherheits-policy: http://www.adobe.com/devnet/flashplayer/articles/fplayer9_security.html
In der Realität port 843 dient eine etwas anderen Zweck dem gleichen port Reaktion. Port 843 ist für die meta-Politik (site policy). Es Vorrang vor gleichen-port-Richtlinien. Der administrator kann definieren flash-Strategien für das gesamte system und können es verwenden, um zu leugnen, nicht-privilegierten Benutzern zu gestatten, dass die eingehende flash-socket-verbindungen. Dies ist der Grund, warum es auf port 843 (das ist in den privilegierten Bereich), so dass nur der Systemadministrator kann starten Sie den Dienst auf diesem port.
Den 3-Sekunden-timeout gilt nur in dem Fall, wo verbindungen auf port 843 werden stillschweigend verworfen. Es gilt nicht für den Fall, es gibt einige andere Dienst läuft auf port 843 oder die Verbindung abgelehnt wird (D. H. TCP-reset). Ich benutze dasselbe-port die ganze Zeit und es gibt keine wahrnehmbare Verzögerung mit nur einem gleichen port policy server.
Mit einem WebSocket-server ein zusätzlicher Vorteil der gleiche-port politische Antwort ist, dass Sie leichter koordinieren die origin-policy-Konfiguration zwischen dem flash-Politik und der WebSockets-handshake.
Mit ein bisschen Hilfe von den Node.js mailing-Liste, die ich kam mit die folgenden:
Schrieb ich auch ein (kurzes) tutorial für WebSockets-Anwendungen mit Flash Sockets.
Ist es besser, zu überschreiben Stream Listener (socket-Listener).
Sonst wird Ihr server abstürzt, wenn Sie haben einige Fehler wie:
Beispiel der Umsetzung zu verhindern :
Siehe Dokumentation unter : http://nodejs.org/api.html (bei "net.Stream")