【发布时间】:2018-04-08 08:11:41
【问题描述】:
我知道可以通过反向代理(如 Nginx、HAproxy 等)传递请求,但我需要将请求重定向到同一域后缀中的另一台公共服务器。 IE。从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);
};
【问题讨论】:
-
我认为这取决于客户端的实现。大多数 ws 客户端在 HTTP 握手期间不遵循重定向..
-
你知道跟随重定向的浏览器客户端吗?
-
我不这么认为。客户端可以从响应中获取新的位置 url,断开连接并重新连接到新的 url。我怀疑当前的实现会引发错误。也许像socket.io这样的客户端ws库?有open issue 与以下重定向相关,但没有任何进展..
-
是的,但我不想强迫客户管理这个逻辑。当然这是一种变通方法,但希望将来能正常支持重定向。
-
@JohnBachir 我没有,但 jfriend00 对客户端重定向逻辑提出了一个很好的观点。如果您同时管理服务器端和客户端代码,那么它比向客户端提供通用 API 更容易实现。如果您提供的是通用 API,那么合并一些决定您的 API 使用的策略可能是有意义的。也就是说,我没有机会研究这个,所以,可能存在更好的替代方案。
标签: javascript nginx websocket