Ich möchte einen WebSocket-URI relativ zum Seiten-URI auf der Browserseite erstellen. Angenommen, in meinem Fall konvertieren Sie HTTP-URIs wie
http://example.com:8000/path
https://example.com:8000/path
zu
ws://example.com:8000/path/to/ws
wss://example.com:8000/path/to/ws
Was ich derzeit mache, ist, die ersten 4 Buchstaben "http" durch "ws" zu ersetzen und "/ to / ws" daran anzuhängen. Gibt es dafür einen besseren Weg?
websocket
uri
relative-path
Neuront
quelle
quelle
path/to/ws
? Wohin führt das genau? DankeAntworten:
Wenn Ihr Webserver WebSockets (oder ein WebSocket-Handler-Modul) unterstützt, können Sie denselben Host und Port verwenden und einfach das angezeigte Schema ändern. Es gibt viele Optionen, um einen Webserver und einen Websocket-Server / ein Websocket-Modul zusammen auszuführen.
Ich würde vorschlagen, dass Sie sich die einzelnen Teile der window.location global ansehen und sie wieder zusammenfügen, anstatt eine blinde Zeichenfolge zu ersetzen.
Beachten Sie, dass einige Webserver (z. B. Jetty-basierte) derzeit den Pfad (anstelle des Upgrade-Headers) verwenden, um zu bestimmen, ob eine bestimmte Anforderung an den WebSocket-Handler weitergeleitet werden soll. Sie können also eingeschränkt sein, ob Sie den Pfad so transformieren können, wie Sie es möchten.
quelle
"/to/ws"
? Wenn nicht, welchen Wert sollte dieser Teil haben?Hier ist meine Version, die den TCP-Port hinzufügt, falls es nicht 80 oder 443 ist:
Edit 1: Verbesserte Version wie auf Vorschlag von @kanaka:
Edit 2: Heutzutage erstelle ich das
WebSocket
:quelle
Verwenden der Window.URL-API - https://developer.mozilla.org/en-US/docs/Web/API/Window/URL
Funktioniert mit http (s), Ports usw.
quelle
Angenommen, Ihr WebSocket-Server überwacht denselben Port, von dem aus die Seite angefordert wird, würde ich Folgendes vorschlagen:
Nennen Sie es dann für Ihren Fall wie folgt:
quelle
einfach:
quelle
/^http/
anstelle von'http'
nur für den Fall verwenden,http
ist in der URL-Leiste.Auf localhost sollten Sie den Kontextpfad berücksichtigen.
quelle
Im Typoskript:
Verwendung:
quelle