我有一个Jetty 8服务器运行(希望很快与websockets)。
如果我想通过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
。
但是如果我想用WebSockets完成同样的事情,我找不到如何做到这一点:
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
。
我怎样才能做到这一点?
自己构建URL:
var socket = new WebSocket("ws://" + location.host + "/whatever");
location
对象是window
对象的属性,因此是全局可用的。
如果只获取没有端口的主机,请使用location.hostname
代替。如果websocket服务器监听另一个端口,例如:
你也可以检查location.protocol
,知道你是否应该连接到wss
(当https
被使用)或ws
(当http
被使用)。