WebSocketを現在のサーバーに向ける方法 質問する

WebSocketを現在のサーバーに向ける方法 質問する

Jetty 8 サーバーを実行しています (できればすぐに Websocket も実行します)。

Ajax 呼び出しを使用してサーバーにデータを送信したい場合は、次のようにします。

$.ajax({ url: "ajax?a=getSomeData" });

このシナリオでは、 のサーバーに接続する場合192.168.1.100、データを取得する実際の URL は になります192.168.1.100/ajax?a=getSomeDataが、 で同じソフトウェアを実行している別のサーバーに接続する場合192.168.1.200、URL は になります192.168.1.200/ajax?a=getSomeData

しかし、WebSocket を使用して同じことを実現したい場合、その方法が見つかりません。

var socket = new WebSocket('ws://www.example.com/');

動作します。ただし、相対 URL のようなものが欲しいです:

var socket = new WebSocket('ws://sockets?a=getSomeData');

したがって、Ajax リクエストと同様に、 のサーバーに接続する場合192.168.1.100、URL は になり192.168.1.100/sockets?a=getSomeData、 に接続する場合192.168.1.200、URL は になります192.168.1.200/sockets?a=getSomeData

どうすればこれを実現できるでしょうか?

ベストアンサー1

自分で URL を構築してください:

var socket = new WebSocket("ws://" + location.host + "/whatever");

オブジェクトはオブジェクトlocationのプロパティであるwindowため、グローバルに利用できます。

ポートなしでホストのみを取得するには、location.hostname代わりに を使用します。たとえば、Websocket サーバーが別のポートでリッスンしている場合などです。

また、 (が使用されている場合) または(が使用されている場合)location.protocolのどちらに接続する必要があるかを調べることもできます。wsshttpswshttp

おすすめ記事