public void Stop() { if (Stopped.Task.IsCompleted) { return; } lock (lockStop) { if (Stopped.Task.IsCompleted) { return; } Log.Info("Stopping"); StarterPIDAliveChecker.Stop(); Log.Info("Shutting down services"); var shutdownTasks = new List <Task>(); foreach (var ws in RegisteredWebsockets.Where(ws => new WebSocketState[] { WebSocketState.Closed, WebSocketState.Closing }.Contains(ws.ReadyState))) { shutdownTasks.Add(Task.Run(() => ShutdownWS(ws))); } Task.WaitAll(shutdownTasks.ToArray()); Log.Info("Shutdown services successful"); Stopped.TrySetResult(true); Log.Info("Stopped"); } }
public WebSocket CreateWebSocket(string path) { var ws = new WebSocket($"ws{(Config.UnencryptedServerCom ? "" : "s")}://{IPAddress.Loopback}:{Config.ComPort}" + path); ws.SetCredentials(Config.Username, Config.Password, false); if (!Config.UnencryptedServerCom) { ws.SslConfiguration.ServerCertificateValidationCallback = (sender, cert, chain, sslPolicyErrors) => { if (cert.GetPublicKeyString() != Config.ServerCertPublicKey) { Log.Error($"PublicKeyError: {cert.GetPublicKeyString()}"); return(false); } return(true); }; } RegisteredWebsockets.Add(ws); return(ws); }