WebSocket sendet zusätzliche Informationen zur Verbindung

8

Gibt es eine Möglichkeit für einen WebSocket-Client, zusätzliche Informationen über die anfängliche Verbindung zum WebSocket-Server zu senden?

Ich frage, weil ich möchte, dass der Client die Benutzer-ID (String) sofort an den Server sendet. Ich möchte nicht, dass der Client die Benutzer-ID im OnOpen-Callback sendet. Warum? Weil es schneller und einfacher ist.

Wenn die WebSocket-API dies nicht erlaubt, warum nicht? Wenn es keinen guten Grund gibt, wie könnte ich vorschlagen, dass sie diese einfache Funktion hinzufügen?

    
ma11hew28 19.10.2013, 02:02
quelle

1 Antwort

9

Aktualisierte Antwort

@dandavis ist ein Genie. Sein Kommentar zur Frage des Sendens der Benutzer-ID in der Abfragezeichenfolge des ersten (URL-) Arguments des WebSocket-Konstruktors funktioniert! Und ich bin mir ziemlich sicher, dass es nur einmal vom Client während des Öffnen-Handshakes (1.3) des WebSocket-Protokolls ( RFC 6455) .

Es hat sogar funktioniert, um es in den Pfad zu senden, den ich jetzt bevorzuge, da der WebSocket-Server, den ich gemacht habe, nur für WebSockets ist. Ich verwende Node.js mit ws . Ich verbinde mich mit der URL ws://localhost:5000/4 , wobei 4 die Benutzer-ID ist. Um die Benutzer-ID zu erhalten, mache ich ws.upgradeReq.url , so:

%Vor%

Um die Sicherheit zu gewährleisten, gebe ich als Nächstes das Zugriffstoken anstelle der Benutzer-ID aus.

Ursprüngliche Antwort

Sie können die Benutzer-ID (Zeichenfolge) als zweites Argument (protocols) des WebSocket-Konstruktors <übergeben / a>.

Das sollte funktionieren, aber es ist nicht für das gedacht, was Sie wollen. Es ist definitiv ein Hack. Also, ich empfehle es nicht. Außerdem gibt der Server die Benutzer-ID in seinem Handshake an den Client zurück. Und das brauchst du nicht. Das wären zusätzliche Daten, die über die Leitung gesendet werden, die für Sie keinen Nutzen haben.

Ich bin mir nicht sicher, warum Sie mit der WebSocket-API nicht das tun können, was Sie wollen. Vielleicht ist es so sicherer.

    
ma11hew28 19.10.2013 02:04
quelle