Сервер часто теряет соединение Azure SignalR - PullRequest
0 голосов
/ 20 февраля 2019

Мой проект ASP.NET Web API (целевая среда: .NET Framework 4.6.2) часто теряет связь со службой Azure SignalR ( свободный уровень ).Я следовал примеру, как показано в aspnet 'chatroom' example .

Мое клиентское приложение основано на Angular JS.Сообщения отправляются клиентам, но через несколько часов соединение с сервером со службой Azure SignalR теряется и снова не устанавливается.

Насколько я понимаю из документации MS Azure SignalR Internals :

Если подключение к серверу отключено из-за проблем с сетью,

  • подключение к серверу начинает повторное подключение автоматически .

В ответ возвращается следующая ошибка:

Служба Azure SignalR еще не подключена, повторите попытку позже

Однако это непохоже, что происходит, т. е. соединение сервера со службой Azure SignalR снова не установлено.

enter image description here

nuget пакетов:

  • Microsoft.AspNet.SignalR v2.4.0
  • Microsoft.AspNet.SignalR.Core v2.4.0
  • Microsoft.AspNet.SignalR.SystemWeb v2.4.0
  • Microsoft.Azure.SignalR.AspNet v1.0.0-preview1-10317
  • Microsoft.Azure.SignalR.Protocols v1.0.6

Ответы [ 2 ]

0 голосов
/ 25 февраля 2019

В настоящее время существует проблема с Microsoft.Azure.SignalR.AspNet v1.0.0-preview1-10317.Исправление планируется выпустить на этой неделе.

0 голосов
/ 21 февраля 2019

Вы добавили код обработки ошибок в свой клиент, как показано ниже -

 // Define handlers for any errors
        //
        this.hubConnection.error((error: any) => {
            // Push the error on our subject
            //
            this.hubConnection.start()
                .done(() => {
                    this.startingSubject.next();

                    //Invoke connect method on Hub
                    //  this.hubProxy.invoke("Connect", userId, usertype);

                })
                .fail((error: any) => {
                    this.startingSubject.error(error);
                });
        });

Также в случае закрытого подключения код будет выглядеть как

this.hubConnection.onclose(() => { 
    setTimeout(function(){
    this.hubConnection.start()
               .done(() => {
                    this.startingSubject.next();

                        //Invoke connect method on Hub
                      //  this.hubProxy.invoke("Connect", userId, usertype);

                   })
                  .fail((error: any) => {
                        this.startingSubject.error(error);
                   });
       },3000); 
   }); 

Надеюсь, это поможет.

MV

...