示例#1
0
        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();
        }
示例#2
0
 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();
 }
示例#3
0
        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));
            });
        }
示例#4
0
        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));
            });
        }