Signalr 具有信号协商的服务结构反向代理

Signalr 具有信号协商的服务结构反向代理,signalr,reverse-proxy,azure-service-fabric,service-fabric-stateful,Signalr,Reverse Proxy,Azure Service Fabric,Service Fabric Stateful,我正在点击有状态服务的反向代理url以连接到SignalR hub,当SignalR尝试建立连接时,javascript客户端调用协商端点,该端点返回一个url参数,然后尝试用于连接端点。问题是返回的url参数是指向集群上公开的端点侦听器的部分路由。 它成功地返回了 {"Url":"/9fd06df9-4399-4ea8-8771-9875b6ee4026/132235137104318266/8d308cc3-2fd7-40a6-96c3-2e521bf384ef/signalr",...

我正在点击有状态服务的反向代理url以连接到SignalR hub,当SignalR尝试建立连接时,javascript客户端调用协商端点,该端点返回一个url参数,然后尝试用于连接端点。问题是返回的url参数是指向集群上公开的端点侦听器的部分路由。

它成功地返回了

{"Url":"/9fd06df9-4399-4ea8-8771-9875b6ee4026/132235137104318266/8d308cc3-2fd7-40a6-96c3-2e521bf384ef/signalr",...
我如何告诉signalR忽略协商返回的URL,并使用我最初提供的反向代理URL进行连接?最终的问题是,它将返回的路由与我最初提供的反向代理url混合在一起,因此connect尝试将fankenstein url与反向代理的端口一起使用,而不是与结构节点的路由一起使用。结果是404

ws://localhost:19081/9fd06df9-4399-4ea8-8771-9875b6ee4026/132235137104318266/8d308cc3-2fd7-40a6-96c3-2e521bf384ef/signalr/connect
这是因为从协商端点返回的路由必须通过我的端点的公开端口(5102)直接调用

   ws://localhost:5102/9fd06df9-4399-4ea8-8771-9875b6ee4026/132235137104318266/8d308cc3-2fd7-40a6-96c3-2e521bf384ef/signalr/connect

不知何故,我需要在url尝试连接之前修复它,因为它从协商生成的url是错误的。

我最终使用ajax数据过滤器拦截协商响应并将url重写回反向代理

   jQuery.ajaxSetup({
  dataFilter: (data, type) => {
    //modify the data
    if (~data.indexOf('ConnectionToken') && ~data.indexOf('Url') & ~data.indexOf('TryWebSockets')) {
      var dataobj = JSON.parse(data);
      dataobj.Url = this.ServiceProxyUrl + "signalr";
      return JSON.stringify(dataobj);
    }
    return data;
  }
});