Javascript 是否可以无缝重定向WebSocket?

Javascript 是否可以无缝重定向WebSocket?,javascript,nginx,websocket,Javascript,Nginx,Websocket,我知道可以通过反向代理(如Nginx、HAproxy等)传递请求,但我需要将请求重定向到同一域后缀中的另一个公共服务器。即从wss://example.com至wss://ws1.example.com 以下是一个例子: 我需要重定向来自Nginx或Java的请求。 可以组织吗?我是否需要在客户端处理重定向,或者这段代码就足够了 var socket = new WebSocket("wss://example.com"); socket.onopen = function() { al

我知道可以通过反向代理(如Nginx、HAproxy等)传递请求,但我需要将请求重定向到同一域后缀中的另一个公共服务器。即从
wss://example.com
wss://ws1.example.com

以下是一个例子:

我需要重定向来自Nginx或Java的请求。 可以组织吗?我是否需要在客户端处理重定向,或者这段代码就足够了

var socket = new WebSocket("wss://example.com");

socket.onopen = function() {
  alert("Connection established.");
};

socket.onclose = function(event) {
  alert('Connection closed');
};

socket.onmessage = function(event) {
  alert("Data: " + event.data);
};

socket.onerror = function(error) {
  alert("Error " + error.message);
};
根据:

一旦发送了客户端的开始握手,客户端必须等待服务器的响应,然后再发送任何进一步的数据。客户端必须验证服务器的响应,如下所示:

  • 如果从服务器接收到的状态代码不是101,则 客户端根据HTTP[RFC2616]过程处理响应。在里面 特别是,如果客户端 接收401状态代码;服务器可能会重定向客户端 使用3xx状态代码(但客户无需遵循 他们)等
  • 因此,是否支持重定向完全取决于客户机,并且显然不是您可以依赖的,除非您在广泛的测试中发现所有相关客户机都支持重定向(他们显然不支持重定向)


    要手动将连接移动到另一台服务器,您必须使用服务器端代理或客户端方案。

    我认为这取决于客户端实现。大多数ws-client在HTTP握手期间不遵循重定向。你们知道遵循重定向的浏览器客户端吗?我不这么认为。客户端可以从响应中获取新的位置url,断开连接并重新连接到新的url。我怀疑当前的实现会抛出错误。也许是一些客户端ws-library,比如socket.io?这与以下重定向相关,但没有任何进展。是的,但我不想强迫客户机管理此逻辑。当然,这是一个解决办法,但希望将来的重定向将得到正常支持。