private static void StartPing() { Thread.Sleep(PingInterval); webSocket = new WebSocket(string.Format("ws://127.0.0.1:{0}/socket.io/?EIO=3&transport=websocket", startInfo.EnvironmentVariables["port"])); webSocket.SetCookie(new WebSocketSharp.Net.Cookie("authorization", SignalrServiceClient.CreateAuthToken())); webSocket.OnMessage += (sender, e) => { if (e.Data.Contains("error")) { Logger.Error("Auth error"); cancellationTokenSource.Cancel(); } }; webSocket.Connect(); Task.Run(() => { while (webSocket.Ping()) { Logger.Debug("Ping"); Thread.Sleep(PingInterval); } Logger.Debug("Reconnect"); if (retries < maxretries) { StartNode(); retries++; } }, cancellationTokenSource.Token); }
private void StartPing() { Thread.Sleep(PingInterval); var error = false; WebSocket = new WebSocket(string.Format("ws://127.0.0.1:{0}/socket.io/?EIO=3&transport=websocket", StartInfo.EnvironmentVariables["port"])); WebSocket.SetCookie(new WebSocketSharp.Net.Cookie("authorization", SignalrServiceClient.CreateAuthToken())); WebSocket.EmitOnPing = true; WebSocket.Log.Level = WebSocketSharp.LogLevel.Trace; WebSocket.Log.Output = (logData, filePath) => { if (logData.Message.Contains("SocketException")) { error = true; } Logger.Debug(logData.Message); }; WebSocket.OnOpen += (sender, e) => { Logger.Info("Open"); error = false; Thread.Sleep(PingInterval); Task.Run(() => { while (WebSocket.Ping()) { Logger.Debug("Ping " + WebSocket.ReadyState); Thread.Sleep(PingInterval); } Logger.Debug("Reconnect" + WebSocket.ReadyState); }, CancellationTokenSource.Token); }; WebSocket.OnClose += (sender, e) => { Logger.Info("Close"); if (CancellationTokenSource.IsCancellationRequested) { return; } if (error) { Process.GetCurrentProcess().Kill(); } else { WebSocket.Connect(); } }; WebSocket.OnMessage += (sender, e) => { if (e.Data.Contains("error")) { Logger.Error("Auth error"); CancellationTokenSource.Cancel(); } }; WebSocket.OnError += (sender, e) => { Logger.Error("Error", e.Exception); }; WebSocket.Connect(); }