Exemple #1
0
        static void Main(string[] args)
        {
            var uri = new Uri("ws://localhost:8000");
            var handlersByResourceName = new Dictionary <string, Type>
            {
                { "/sample", typeof(MessageHandler) }
            };
            var handerFactory = new WebSocketHandlerFactory(handlersByResourceName);
            //var dispatcher = new WebSocketDispatcher(uri, "originTest", handerFactory);
            var etiquette  = new ServerEtiquette(uri, "null");
            var dispatcher = new WebSocketDispatcher(uri, etiquette, handerFactory)
            {
                FromFieldName = "From"
            };

            Console.WriteLine("Server started");
            Console.WriteLine("Listening on " + uri);

            var text = string.Empty;

            while ((text = Console.ReadLine()) != "q")
            {
                var post = new Message {
                    From = "Server", Text = text
                };
                //dispatcher.SendAsync(JsonConvert.SerializeObject(post), "Client");
            }
        }
Exemple #2
0
        protected async Task SendMessageAsync()
        {
            await WebSocketDispatcher.SendMessageAsync(new SendMessageRequest {
                ChannelId = "General",
                Text      = ChatMessage
            });

            ChatMessage = "";
            LogMetric("Action.SendMessage", 1.0, LambdaMetricUnit.Count);
        }
Exemple #3
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
            }
        }
Exemple #4
0
        public HybridEngine(RequestDispatcher requestDispatcher, WebSocketDispatcher webSocketDispatcher, IPipelines pipelines)
        {
            if (requestDispatcher == null)
            {
                throw new ArgumentNullException("requestDispatcher");
            }
            if (webSocketDispatcher == null)
            {
                throw new ArgumentNullException("webSocketDispatcher");
            }
            if (pipelines == null)
            {
                throw new ArgumentNullException("pipelines");
            }

            _requestDispatcher   = requestDispatcher;
            _webSocketDispatcher = webSocketDispatcher;
            _pipelines           = pipelines;
        }
Exemple #5
0
 public HybridEngine(RequestDispatcher requestDispatcher, WebSocketDispatcher webSocketDispatcher)
     : this(requestDispatcher, webSocketDispatcher, new Pipelines())
 {
 }
Exemple #6
0
 //--- IDisposable Members ---
 void IDisposable.Dispose() => WebSocketDispatcher.Dispose();
Exemple #7
0
 protected async Task RenameUserAsync()
 {
     await WebSocketDispatcher.SendMessageAsync(new RenameUserRequest {
         UserName = UserName
     });
 }