Exemplo n.º 1
0
        public static void Start()
        {
            LocalLogger.Log($"Method {nameof(HubService)} is running");
            try
            {
                var credentialsManager = new CredentialsManager(Settings.ApiUrl, Settings.UserRelatedStoragePath,
                                                                Settings.SystemRelatedStoragePath, "ArktinMonitor");

                var bearerToken = credentialsManager.LoadJsonWebToken().AccessToken;
                if (!HubConnection.Headers.TryGetValue("Authorization", out var value))
                {
                    HubConnection.Headers.Add("Authorization", "Bearer " + bearerToken);
                }
                if (value != "Bearer " + bearerToken)
                {
                    HubConnection.Headers["Authorization"] = "Bearer " + bearerToken;
                }

                if (_myHubProxy == null)
                {
                    _myHubProxy = HubConnection.CreateHubProxy("MyComputerHub");
                    HubConnection.StateChanged += state =>
                    {
                        _connectionId = HubConnection.ConnectionId;
                        if (state.NewState == ConnectionState.Connected)
                        {
                            Pong(_connectionId);
                        }
                        LocalLogger.Log(
                            $"State of connection to hub changed from {state.OldState} to {state.NewState}");
                    };


                    _myHubProxy.On <string, string>("command", ExecuteCommand);
                    _myHubProxy.On <string, int>("powerAction", PowerAction);
                    _myHubProxy.On <string>("ping", Pong);
                    _myHubProxy.On("requestProcesses", GetProcesses);
                }
                LocalLogger.Log("Starting hub connection");

                HubConnection.Start().Wait();

                LocalLogger.Log("Joining to group");
                JoinToGroup();
                //Pong(_connectionId);
            }
            catch (Exception e)
            {
                LocalLogger.Log(nameof(Start), e);
            }
            HubConnection.Error += exception =>
            {
                if (!(exception is System.TimeoutException))
                {
                    LocalLogger.Log(nameof(HubConnection.Error), exception);
                }
            };
        }