如何将WebSocket指向当前服务器



我有一个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被使用)。

相关内容

  • 没有找到相关文章

最新更新