public void Start(IServerParams pParams, Action <IClientConnection> pClientConnectedAction) { Listener.Prefixes.Add("http://+:8080/"); new Thread(() => { Listener.Start(); Log.Info("Started Listening"); //ToDo: change while true to use a cancellationtoken that's set when disconnect/close is called try { while (true) { var objContext = Listener.GetContext(); if (objContext.Request.IsWebSocketRequest) { ProcessConnection(objContext, pClientConnectedAction); } else { objContext.Response.StatusCode = 400; objContext.Response.Close(); } } } catch (TaskCanceledException) { } catch (OperationCanceledException) { //ignore } catch (Exception ex) { Console.WriteLine($"Error: {ex.Message}, closing server..."); Stop(); } }) { IsBackground = true, Name = "WebSocket Accept Thread" }.Start(); }
public void Start(IServerParams pParams, Action <IClientConnection> pClientConnectedAction) { Listener.Prefixes.Add($"http{(Params.Secure ? "s" : "")}://+:" + Params.Port + "/" + Params.Path.TrimStart('/')); Listener.Start(); Log.Info("Started Listening"); new Thread(() => { //ToDo: change while true to use a cancellationtoken that's set when disconnect/close is called try { while (true) { var objContext = Listener.GetContext(); if (objContext.Request.IsWebSocketRequest) { ProcessConnection(objContext, pClientConnectedAction); } else { objContext.Response.StatusCode = 400; objContext.Response.Close(); } } } catch (TaskCanceledException) { } catch (OperationCanceledException) { //ignore } finally { Console.WriteLine("closing server..."); Stop(); } }) { IsBackground = true, Name = "WebSocket Accept Thread" }.Start(); }
public void Start(IList <IWebSocketConnection> clients) { var loggerConfig = _loggerContext.LoggerConfig as ILoggerConfig; _server = _webSocketServerFactory.New(loggerConfig.ServerLoggingAddress); _server.Start(socket => { socket.OnOpen = () => { _writer.WriteLine("Logging Server OnOpen..."); clients.Add(socket); }; socket.OnClose = () => { _writer.WriteLine("Logging Server OnClose..."); clients.Remove(socket); }; socket.OnError = exception => { _writer.WriteLine($"Logging Server OnError, Error details:{exception.Message}"); }; var consumer = new SeriLogConsumer(_loggerContext); socket.StartConsuming(new AuditCommandConsumer(consumer, socket, _writer)); }); }
public void Start(IList <IWebSocketConnection> clients) { var loggerConfig = _loggerContext.LoggerConfig; _server = _webSocketServerFactory.New(loggerConfig.Endpoint); _server.Start(socket => { socket.OnOpen = () => { _writer.WriteLine("Logging Server OnOpen..."); clients.Add(socket); }; socket.OnClose = () => { _writer.WriteLine("Logging Server OnClose..."); clients.Remove(socket); }; socket.OnError = exception => { _writer.WriteLine($"Logging Server OnError, Error details:{exception.Message}"); }; var innerConsumer = new SeriLogConsumer(_loggerContext); var defaultConsumer = _auditCommandConsumerFactory?.New(innerConsumer, socket, _writer) ?? new AuditCommandConsumerFactory().New(innerConsumer, socket, _writer); socket.StartConsuming(new ForwardingConsumer(defaultConsumer, _loggerContext)); }); }