2010-11-22 8 views
2

Ich möchte einen einfachen Long-Polling-Server in node.js erstellen, wo die Kommunikation auf JSONP-Anfragen basiert. Ich verstehe, dass der Client eine Anfrage stellt und der Server die Antwort hält, bis einige Daten bereit sind oder eine bestimmte Zeitüberschreitung erreicht ist, und dann wird eine neue Anfrage vom Client gemacht, um die Dinge am Laufen zu halten. Sobald die erste Anfrage gestellt wurde, wird die Sitzungs-ID erzeugt und gespeichert, um die Liste der aktiv verbundenen Clients zu behalten. Wie erkenne ich nun, dass jede andere Anfrage nach der ersten Antwort von Server zu Client zu dem Client in meiner Liste der aktiven Verbindungen gehört?Long-Polling-Server-Prinzip (Client-Identifikation)

Ich kann mir vorstellen, es so zu machen: erste Antwort vom Server sendet zugewiesene Sitzungs-ID zum Client, und dann wird er identifiziert, basierend auf dieser ID, wenn er nächste Anfragen macht. Aber ich denke, dass dieser Ansatz leicht ausgenutzt werden kann und anfällig für Identitätsdiebstahl ist.

Antwort

1

Ich würde eine cookie verwenden.

Nächster Schritt für mich wäre, SSL zu verwenden, wenn ich über ID-Diebstahl besorgt wäre.

0

Statt all diesen Code selbst schreiben, würde ich vorschlagen, dass Sie mit einem Arbeits gehen und getestet Lösung:
https://github.com/LearnBoost/Socket.IO-node
https://github.com/LearnBoost/Socket.IO

Socket.IO kümmert sich um alle die Verbindung Sachen für Sie, und Es wählt automatisch die bestmögliche Verbindungsmethode wie WebSockets und fällt, falls sie nicht verfügbar sind, fälschlicherweise zurück.

+0

Ich weiß über Socket.IO, aber das ist nur Hobby Sachen für mein Vergnügen erstellt, wenn Sie wissen, was ich meine :). – yojimbo87

+0

Nun, lassen Sie mich sagen, dass JSONP die schlechteste Wahl ist, es ist die unsicherste Art, das Messaging zu machen, da es direkt das JavaScript ausführt (einschließlich aller darin enthaltenen Funktionen). –

+0

Das Problem ist in der gleichen Ursprungsrichtlinie und JSONP ist (nach meinem Wissen) die einzige Möglichkeit, die über alle Browser funktioniert. Auch Google verwendet es für verschiedene Dinge (zum Beispiel http://googlecode.blogspot.com/2010/11/instant-previews-under-hood.html). – yojimbo87