[解決済み] WebSocket URIをページURIに相対的に構築する方法とは?
2022-11-11 12:09:41
質問
WebSocketのURIをブラウザ側のページURIと相対的に構築したい。例えば、私の場合、HTTP URIを次のように変換します。
http://example.com:8000/path
https://example.com:8000/path
から
ws://example.com:8000/path/to/ws
wss://example.com:8000/path/to/ws
現在やっていることは、最初の4文字 "http" を "ws" に置き換え、それに "/to/ws" を追加しています。何か良い方法はないでしょうか?
どのように解決するのですか?
Web サーバーが WebSocket をサポートしている場合 (または WebSocket ハンドラ モジュールがある場合)、同じホストとポートを使用して、表示されているようにスキームを変更するだけでよいのです。Web サーバーと Websocket サーバー/モジュールを一緒に実行するための多くのオプションがあります。
私は、ブラインド文字列置換を行う代わりに、window.location グローバルの個々の部分を見て、それらを一緒に結合することを提案します。
var loc = window.location, new_uri;
if (loc.protocol === "https:") {
new_uri = "wss:";
} else {
new_uri = "ws:";
}
new_uri += "//" + loc.host;
new_uri += loc.pathname + "/to/ws";
一部のウェブサーバ (Jetty ベースのもの) は、特定のリクエストを WebSocket ハンドラに渡すべきかどうかを判断するのに、現在 (upgrade ヘッダではなく) パスを使用していることに注意してください。そのため、あなたが望む方法でパスを変換できるかどうかが制限されるかもしれません。
関連
-
[解決済み] TraefikでWebSocketをプロキシする方法とは?
-
[解決済み] ライブオーディオストリーミング用Webアプリのアーキテクチャ
-
[解決済み] URI、URL、URNの違いは何ですか?
-
[解決済み] 億の相対的輸入
-
[解決済み】URIの単語の区切り文字にハイフン、アンダースコア、キャメルケースのどれを使うか?
-
[解決済み】HTTP/2はウェブソケットを時代遅れにするのか?
-
[解決済み】WebRTCとWebsocketの比較。WebRTCがビデオ、オーディオ、データを扱えるなら、なぜWebsocketが必要なのですか?[というご質問をいただきました。]
-
[解決済み] Socket.IOの最大同時接続数
-
[解決済み] 1,000,000個のウェブソケットを開き続けるために必要なシステムリソースはどれくらいですか?[クローズド]
-
[解決済み] ロードバランシングウェブソケット
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] TraefikでWebSocketをプロキシする方法とは?
-
[解決済み] ライブオーディオストリーミング用Webアプリのアーキテクチャ
-
[解決済み】HTTP/2はウェブソケットを時代遅れにするのか?
-
[解決済み】WebRTCとWebsocketの比較。WebRTCがビデオ、オーディオ、データを扱えるなら、なぜWebsocketが必要なのですか?[というご質問をいただきました。]
-
[解決済み] Socket.IOの最大同時接続数
-
[解決済み] 1,000,000個のウェブソケットを開き続けるために必要なシステムリソースはどれくらいですか?[クローズド]
-
[解決済み] ロードバランシングウェブソケット
-
[解決済み] Chrome Developer Toolsでwebsocketトラフィックを検査する方法は?重複