SignalR-リモートサーバーに接続できません

DmitryBoyko

SignalRのエラーを適切に管理する方法

リモートサーバーに接続できません

同じメソッドをcatch (Exception ex) {}ブロックするだけですか?または、おそらくそれを行う別の方法があります。

ありがとうございました!

 public void StartEventSniffer()
        {
            try
            {
                #region Create HubConnection
                var connection = new HubConnection(Properties.Settings.Default.HostNotificationURL);
                _hub = connection.CreateHubProxy("NotificationManager");
                connection.Start().Wait();
                #endregion

                #region ATM/Host Connection Events
                _hub.On(HostNotificationManagerMethods.ValidATMConnected.ToString(), x =>
                {
                    try
                    {
                       //Some code
                    }
                    catch (Exception ex)
                    {
                        logger.Error(ex);
                    }
                });

                _hub.Invoke(HostNotificationManagerMethods.ValidATMConnected.ToString(), null).Wait();

                #endregion               
            }
            catch (Exception ex)
            {
                logger.Error(ex);

                StartEventSniffer(); // Reconnect
            }
        }
DmitryBoyko

最後に、TimerSignalR接続イベントの組み合わせを使用しました

namespace MyAppManager
{
    /// <summary>
    /// Interaction logic for MainWindow.xaml
    /// </summary>
    public partial class MainWindow : MetroWindow
    {
        #region Properties
        private static Logger logger = LogManager.GetCurrentClassLogger();
        private bool _shutdown;
        private readonly MainWindowViewModel _viewModel;
        internal static MainWindow Main;
        IHubProxy _hub;
        HubConnection connection;

        Timer hubTimer;
        #endregion

        #region Delegates
        public class ValidATMConnectedEventArgs : EventArgs
        {
            public ATMItem ATM { set; get; }

            public ValidATMConnectedEventArgs(ATMItem atm)
            {
                ATM = atm;
            }
        }
        public delegate void ValidATMConnectedEventHandler(object sender, ValidATMConnectedEventArgs e); 

        #endregion

        #region Events

        public event ValidATMConnectedEventHandler ValidATMConnectedEvent;
        public void OnValidATMConnected(ValidATMConnectedEventArgs e)
        {
            ValidATMConnectedEvent?.Invoke(this, e);
        }

        #endregion

        #region Ctor
        public MainWindow()
        {
            InitializeComponent();

            hubTimer = new Timer();
            hubTimer.Interval = TimeSpan.FromMilliseconds(5000).TotalMilliseconds;
            hubTimer.Elapsed += HubTimer_Elapsed;

            _viewModel = new MainWindowViewModel(DialogCoordinator.Instance);
            DataContext = _viewModel;

            Loaded += MainWindow_Loaded;
        }

        private void HubTimer_Elapsed(object sender, ElapsedEventArgs e)
        {
            if (connection.State == ConnectionState.Disconnected)
            {
                hubTimer.Enabled = false;
                StartEventSniffer();
                hubTimer.Enabled = true;
            }
        }
        #endregion

        #region Internal events
        private void MainWindow_Loaded(object sender, RoutedEventArgs e)
        {
            Main = this;

            #region Create HubConnection
            connection = new HubConnection(Properties.Settings.Default.HostNotificationURL);

            connection.StateChanged += Connection_StateChanged;
            connection.Error += Connection_Error;
            _hub = connection.CreateHubProxy("NotificationManager");

            #endregion

            StartEventSniffer();

            hubTimer.Start();
        }

        private void Connection_Error(Exception ex)
        {
            logger.Error(ex);

            if (connection.State == ConnectionState.Disconnected)
            {
                StartEventSniffer();
            }
        }

        public void StartEventSniffer()
        {
            try
            { 
                connection.Start().Wait();

                #region ATM/Host Connection Events
                _hub.On(HostNotificationManagerMethods.ValidATMConnected.ToString(), x =>
                {
                    try
                    {

                    }
                    catch (Exception ex)
                    {
                        logger.Error(ex);
                    }
                });

                _hub.Invoke(HostNotificationManagerMethods.ValidATMConnected.ToString(), null).Wait();




                #endregion               
            }
            catch (Exception ex)
            {
                logger.Error(ex);
            }
        }

        private void Connection_StateChanged(StateChange obj)
        {
            if (obj.NewState == ConnectionState.Disconnected)
            {
                StartEventSniffer();
            }
        }
        #endregion    

    }
}

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

SignalR Javaがサーバーに接続できません

分類Dev

.NET Core3.1のリモートSignalRハブに接続できません

分類Dev

Xamarin.Forms アプリから SignalR サーバーに接続できない

分類Dev

SignalR:完全なIPアドレスを使用してhttp:// localhost:8080セルフホストサーバーに接続できません

分類Dev

SignalRは複数のサーバーに接続します

分類Dev

エラー:サーバーが閉じるときにエラーを返しました:現在Azureサービスに接続されているアプリサーバーはありません '@ aspnet / signalr

分類Dev

SignalRクライアントは別のサーバーに接続します

分類Dev

SignalRはサーバーからクライアントに接続します

分類Dev

BlazorWebAssemblyでSignalRに接続できませんでした

分類Dev

SignalRはSSLでAzureRedisに接続できません

分類Dev

SignalRクライアント/サーバー接続の問題

分類Dev

SignalR-SignalRライブラリなしでJavaScriptからWebSocketサービスに接続します

分類Dev

SignalRを使用してWinFormサーバーに接続しますか?

分類Dev

SignalRエラー「ターゲットマシンがアクティブに拒否したため、接続できませんでした」

分類Dev

SignalR接続

分類Dev

リモートサーバーでmongoに接続できません

分類Dev

リモートサーバーでmongoに接続できません

分類Dev

リモートmongodbサーバーに接続できません

分類Dev

Send-MailMessage-リモートサーバーに接続できません

分類Dev

リモートmongodbサーバーをdjango / djongoに接続できません

分類Dev

MySQLがリモートサーバーに接続できません

分類Dev

Selenium-リモートサーバーに接続できません

分類Dev

リモートサーバーからMySQLに接続できません

分類Dev

JDBC-MySQLサーバーにリモート接続できません

分類Dev

Signalr-子ディレクトリからハブに接続できません

分類Dev

WinFormsのSignalR-127.0.0.1以外のアドレスに接続できません

分類Dev

Blazorサーバーページのユニットテスト-Blazorサーバーページで使用されるセカンダリsignalRクライアント接続をモックする方法

分類Dev

スプリングブートでリモートサーバー[curl]に接続できません

分類Dev

SSISWebサービスタスクがリモートサーバーに接続できません

Related 関連記事

  1. 1

    SignalR Javaがサーバーに接続できません

  2. 2

    .NET Core3.1のリモートSignalRハブに接続できません

  3. 3

    Xamarin.Forms アプリから SignalR サーバーに接続できない

  4. 4

    SignalR:完全なIPアドレスを使用してhttp:// localhost:8080セルフホストサーバーに接続できません

  5. 5

    SignalRは複数のサーバーに接続します

  6. 6

    エラー:サーバーが閉じるときにエラーを返しました:現在Azureサービスに接続されているアプリサーバーはありません '@ aspnet / signalr

  7. 7

    SignalRクライアントは別のサーバーに接続します

  8. 8

    SignalRはサーバーからクライアントに接続します

  9. 9

    BlazorWebAssemblyでSignalRに接続できませんでした

  10. 10

    SignalRはSSLでAzureRedisに接続できません

  11. 11

    SignalRクライアント/サーバー接続の問題

  12. 12

    SignalR-SignalRライブラリなしでJavaScriptからWebSocketサービスに接続します

  13. 13

    SignalRを使用してWinFormサーバーに接続しますか?

  14. 14

    SignalRエラー「ターゲットマシンがアクティブに拒否したため、接続できませんでした」

  15. 15

    SignalR接続

  16. 16

    リモートサーバーでmongoに接続できません

  17. 17

    リモートサーバーでmongoに接続できません

  18. 18

    リモートmongodbサーバーに接続できません

  19. 19

    Send-MailMessage-リモートサーバーに接続できません

  20. 20

    リモートmongodbサーバーをdjango / djongoに接続できません

  21. 21

    MySQLがリモートサーバーに接続できません

  22. 22

    Selenium-リモートサーバーに接続できません

  23. 23

    リモートサーバーからMySQLに接続できません

  24. 24

    JDBC-MySQLサーバーにリモート接続できません

  25. 25

    Signalr-子ディレクトリからハブに接続できません

  26. 26

    WinFormsのSignalR-127.0.0.1以外のアドレスに接続できません

  27. 27

    Blazorサーバーページのユニットテスト-Blazorサーバーページで使用されるセカンダリsignalRクライアント接続をモックする方法

  28. 28

    スプリングブートでリモートサーバー[curl]に接続できません

  29. 29

    SSISWebサービスタスクがリモートサーバーに接続できません

ホットタグ

アーカイブ