首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >signalR协商请求以回复方式返回原始url,而不是覆盖url。

signalR协商请求以回复方式返回原始url,而不是覆盖url。
EN

Stack Overflow用户
提问于 2015-06-01 08:51:01
回答 1查看 1.2K关注 0票数 3

我正在尝试更改signalR中的集线器连接url,以便所有请求都通过我的自定义负载均衡器。

负载均衡器然后重定向到原始的signalR web应用程序并给出响应。

为此,我试图通过这样更改url来创建一个新的集线器连接。

代码语言:javascript
复制
var signalR = $.signalR;
signalR.hub = $.hubConnection("http://localhost:64071/LoadBalancer.Web/NotificationWeb/signalr", { useDefaultPath: false });

signalR尝试连接到该URL,并在协商请求中返回此响应

代码语言:javascript
复制
{ "Url":"/WE.abcd.Web/signalr", "ConnectionToken":"raYdZtwHWMP50fYIxa4MxRtR8xZAmUhhdlXreYVlB3Meo+2VeZSk4wMEdbkCbVEAzo/+gFyNofqV ......

然后,您可以在响应中看到,URL包含原始URL (即WE.abc.web),因此通信直接发生在WE.abcd.Web上,而不是通过负载均衡器。Web,即使在重写URL之后也是如此。

如何强制协商请求返回我的LoadBalancer.Web网址而不是原来的网址?

EN

回答 1

Stack Overflow用户

发布于 2015-06-02 10:57:19

我认为,只要SignalR使用Request.LocalPath生成协商响应URL,唯一的解决方案就是加载平衡器、修改协商响应(重写URL),然后再将其返回客户端。这就是反向代理的工作原理。

只使用IIS重写功能就可以做到这一点,而不必更改负载均衡器代码。

Sidenote:我对您的需求\生产环境一无所知,但是如果负载平衡站点(承载SignalR)可以从客户端访问(而不是隐藏在防火墙\代理后面),那么描述的行为是完全正确的。只要负载均衡器是在所有服务器之间协商请求的平衡器,那么接下来的连接请求绕过负载均衡器-客户机仍然是平衡的并不重要。+减少麻烦,因为你不需要balance Web sockets连接.

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30569280

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档