.NET Core 2.1 / Angular - для подключения SignalR к хабу требуется ровно 2 минуты - PullRequest
0 голосов
/ 01 июня 2018

У меня есть приложение Ionic, и я хочу, чтобы оно подключалось к моей розетке.Это хорошо сработало в предварительном просмотре SignalR, но по-прежнему работает, но по какой-то причине подключение занимает 2 минуты ...

enter image description here

Iтакже получаю некоторые ошибки при подключении:

enter image description here

Это мой код JavaScript:

ngOnInit() {

    const connection = new signalR.HubConnectionBuilder()
          .withUrl("http://192.168.178.11:8040/socket?sessionId=3dc1dc11")
          .build();

    connection.on("ReceiveMessage", message => {
      console.log(message);

      this.zone.run(() => {
        if(this.locked == true) {
          this.locked = false
        } else {
          this.locked = true;
        }
      });

      console.log(this.locked);
    });

    connection.start().catch(err => console.error);

}

Это мой хаб:

public class DeviceHub : Hub
{
        public override Task OnConnectedAsync()
        {
            var sessionId = Context.GetHttpContext().Request.Query["sessionId"];

            return Groups.AddToGroupAsync(Context.ConnectionId, sessionId);
        }
}

И это моя конфигурация в Startup.cs:

app.UseSignalR(routes =>
{
    routes.MapHub<DeviceHub>("/socket");
});

Теперь мой вопрос: как мне это решить?

РЕДАКТИРОВАТЬ 1:

Задержка перед вызовом метода OnConnectedAsync().

РЕДАКТИРОВАНИЕ 2:

Еще одна вещь, которую я должен добавить, это то, что он напрямую выполняет запрос к моему API:

ws://192.168.178.11:8040/socket?sessionId=3dc1dc11&id=Pt-JDlSPq2_WEIl-8cdPZA

И этот запрос занимает ровно две минуты.

РЕДАКТИРОВАТЬ 3:

Еще одна вещь, на которую я хотел бы обратить внимание, это то, что я использую прокси.Я не могу подключиться напрямую с телефона к API, поэтому для него я использую прокси .Я понятия не имею, имеет ли это какое-либо отношение к этому, но я просто хотел указать это на всякий случай.

1 Ответ

0 голосов
/ 01 июня 2018

Ну ...

Позор мне.

Прокси-сервер вызвал проблему.

Я добавил привязки для своего IP в Visual Studio, и теперь он работает.

Для этого откройте \APPLICATION_FOLDER\.vs\config\applicationhost.config.

Затем найдите <bindings> и добавьте свой собственный.

Пример:

<bindings>
  <binding protocol="http" bindingInformation="*:63251:localhost" />
  <binding protocol="https" bindingInformation="*:44333:localhost" />
  <binding protocol="http" bindingInformation="*:63251:192.168.178.11" />
  <binding protocol="https" bindingInformation="*:44333:192.168.178.11" />
</bindings>

Сохраните его, и все готово.

Примечание:

Теперь вы должны запускать Visual Studio какадминистратор, иначе ваше приложение не запустится.

...