是否可以无缝重定向websockets?

时间:2017-10-26 20:05:00

标签: javascript nginx websocket

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

我需要重定向来自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);
};

1 个答案:

答案 0 :(得分:5)

根据webSocket specification

  

一旦发送了客户端的打开握手,客户端必须等待来自服务器的响应,然后再发送任何其他数据。客户端必须按如下方式验证服务器的响应:

     
      
  1. 如果从服务器收到的状态代码不是101,则      客户端处理每个HTTP [RFC2616]过程的响应。在      特别是,客户端可能会执行身份验证      收到401状态代码;服务器可能会重定向客户端      使用3xx状态代码(但客户不需要遵循      他们)等等。
  2.   

因此,它是否完全取决于客户是否要支持重定向,并且显然不是您可以依赖的东西,除非您在广泛的测试中发现所有相关客户都支持它(他们显然不支持它) )。

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