Beispiel #1
0
        protected async Task SendMessageAsync()
        {
            await WebSocketDispatcher.SendMessageAsync(new SendMessageRequest {
                ChannelId = "General",
                Text      = ChatMessage
            });

            ChatMessage = "";
            LogMetric("Action.SendMessage", 1.0, LambdaMetricUnit.Count);
        }
Beispiel #2
0
        //--- Methods ---
        protected override async Task OnInitializedAsync()
        {
            // configure WebSocket dispatcher
            WebSocketDispatcher = new WebSocketDispatcher(new Uri($"wss://{HttpClient.BaseAddress.Host}/socket"));
            WebSocketDispatcher.RegisterAction <UserMessageNotification>("message", ReceivedMessage);
            WebSocketDispatcher.RegisterAction <UserNameChangedNotification>("username", ReceivedUserNameChanged);
            WebSocketDispatcher.RegisterAction <WelcomeNotification>("welcome", ReceivedWelcomeAsync);
            WebSocketDispatcher.RegisterAction <JoinedChannelNotification>("joined", ReceivedJoinedChannel);

            // attempt to restore authentication tokens from local storage
            var authenticationTokens = await GetAuthenticationTokens();

            if (authenticationTokens == null)
            {
                var guard = await CreateReplayGuardAsync();

                LoginUrl = CognitoSettings.GetLoginUrl(guard);
                LogInfo($"Login URL: {LoginUrl}");
                State = ConnectionState.Unauthorized;
            }
            else
            {
                LogInfo("Attempting to connect to websocket");
                State = ConnectionState.Connecting;

                // attempt to connect to the websocket
                WebSocketDispatcher.IdToken = authenticationTokens.IdToken;
                if (await WebSocketDispatcher.Connect())
                {
                    LogInfo("Websocket connection succeeded");
                    await WebSocketDispatcher.SendMessageAsync(new HelloRequest());
                }
                else
                {
                    LogInfo("Websocket connection failed");
                    await ClearAuthenticationTokens();

                    var guard = await CreateReplayGuardAsync();

                    LoginUrl = CognitoSettings.GetLoginUrl(guard);
                    LogInfo($"Login URL: {LoginUrl}");
                    State = ConnectionState.Unauthorized;
                }

                // TODO: set timer to refresh tokens and reconnect websocket
            }
        }
Beispiel #3
0
 protected async Task RenameUserAsync()
 {
     await WebSocketDispatcher.SendMessageAsync(new RenameUserRequest {
         UserName = UserName
     });
 }