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"); } }
protected async Task SendMessageAsync() { await WebSocketDispatcher.SendMessageAsync(new SendMessageRequest { ChannelId = "General", Text = ChatMessage }); ChatMessage = ""; LogMetric("Action.SendMessage", 1.0, LambdaMetricUnit.Count); }
//--- 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 } }
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; }
public HybridEngine(RequestDispatcher requestDispatcher, WebSocketDispatcher webSocketDispatcher) : this(requestDispatcher, webSocketDispatcher, new Pipelines()) { }
//--- IDisposable Members --- void IDisposable.Dispose() => WebSocketDispatcher.Dispose();
protected async Task RenameUserAsync() { await WebSocketDispatcher.SendMessageAsync(new RenameUserRequest { UserName = UserName }); }