Сервис Fabri c Обратный прокси с SignalR, переговоры - PullRequest
0 голосов
/ 15 января 2020

Я нажимаю обратный URL-адрес прокси-сервера для моей службы с отслеживанием состояния для подключения к концентратору SignalR, и когда SignalR пытается установить sh соединение, клиент javascript вызывает конечную точку согласования, которая возвращает параметр url, который затем пытается использовать для подключения конечной точки. Проблема заключается в том, что возвращаемый параметр url является частичным маршрутом к слушателю конечной точки, доступному в кластере. http://localhost: 19081 / MyServiceFabiricApplication / MyStateFulService / signalr /gotiate? ClientProtocol = 2.1 & PartitionKey = 1 & PartitionKind = Int64Range

, который успешно возвращается с

{"Url":"/9fd06df9-4399-4ea8-8771-9875b6ee4026/132235137104318266/8d308cc3-2fd7-40a6-96c3-2e521bf384ef/signalr",...

Как я могу скажите signalR игнорировать URL-адрес, возвращенный при согласовании, и использовать обратный URL-адрес прокси, который я изначально предоставил для подключения? В конечном итоге проблема заключается в том, что он смешивает возвращаемый маршрут с URL-адресом обратного прокси-сервера, который я изначально предоставил, поэтому попытка соединения использовать URL-адрес fankenstein с портом обратного прокси-сервера, но маршрутом узла fabri c. В результате получается 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, прежде чем он попытается соединиться, потому что тот, который он генерирует из согласования, неверен.

1 Ответ

0 голосов
/ 15 января 2020

В итоге я использовал фильтр данных 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;
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...