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
のどちらに接続する必要があるかを調べることもできます。wss
https
ws
http