public WSWorker(string wsurl) { if (worker != null) { return; } worker = new BackgroundWorkerEX(); worker.DoWork += Worker_DoWork; worker.WorkerSupportsCancellation = true; worker.param = wsurl; worker.RunWorkerAsync(wsurl); }
//{"requestId":13,"requestClass":"SocketAuthenticationService","requestMethod":"authWithToken","requestData":["xxx"]} private void Worker_DoWork(object sender, DoWorkEventArgs e) { BackgroundWorkerEX worker = (BackgroundWorkerEX)sender; while (!worker.CancellationPending) { lock (_locker) { if (driver != null) { foreach (var wsdata in driver.Manage().Logs.GetLog("performance")) { dynamic wsJson = Convert.DeserializeObject(wsdata.Message); try { if (wsJson["message"]["method"] == "Network.webSocketFrameReceived") { JToken payloadData = wsJson["message"]["params"]["response"]["payloadData"]; if (payloadData.ToString().Contains("responseData") && payloadData.ToString().Contains("requestClass") && payloadData.ToString().Contains("requestMethod")) { var token = payloadData; dynamic response = Convert.DeserializeObject(token.ToString()); if (Main != null) { try { Invoker.CallMethode(Main.lvWSMessages, () => Main.lvWSMessages.Items.Add($"Get: {response["requestClass"]} {response["requestMethod"]}: {response["responseData"]}")); } catch (Exception) { Invoker.CallMethode(Main.lvWSMessages, () => Main.lvWSMessages.Items.Add($"Get: {response[0]["requestClass"]} {response[0]["requestMethod"]}: {response[0]["responseData"]}")); } } //OtherPlayerService_newEvent trade_accepted //OtherPlayerService_newEvent great_building_contribution //GuildBattlegroundService_getProvinces //ConversationService_getConversation Update //ConversationService_getNewMessage //ItemAuctionService_updateBid //GuildExpeditionService_receiveContributionNotification } } if (wsJson["message"]["method"] == "Network.webSocketFrameSent") { JToken payloadData = wsJson["message"]["params"]["response"]["payloadData"]; if (payloadData.ToString().Contains("requestId") && payloadData.ToString().Contains("requestClass") && payloadData.ToString().Contains("requestMethod")) { var token = payloadData; WSRequest request = Convert.DeserializeObject <WSRequest>(token.ToString()); if (Main != null) { try { Invoker.CallMethode(Main.lvWSMessages, () => Main.lvWSMessages.Items.Add($"Sent: {request.requestClass} {request.requestMethod}: {request.requestData}")); } catch (Exception) { } } } } } catch (Exception) { continue; } } } } Thread.Sleep(500); } }