public void SendHeadbeat() { Task.Factory.StartNew(() => { while (true) { bool isStart = true; while (isStart) { if (m_wsQClient != null && m_wsQClient.IsConnected) { var m = new object(); byte[] request = SerHelper.Serialize(m); _logger.LogInformation($"[SendHeadbeat] 发送心跳"); m_wsQClient.Send(request); } else { isStart = false; break; } Thread.Sleep(20 * 1000);//休眠20秒 } } }); }
private void WSClient__Opened(object sender, EventArgs e) { if (m_wsQClient.IsConnected && ((AsyncTcpSession)sender).LocalEndPoint == m_wsQClient?.LocalEndPoint) { Task.Factory.StartNew(() => { while (true) { if (m_wsQClient != null && m_wsQClient.IsConnected) { OMDC_HeartBeatReq HB = new OMDC_HeartBeatReq(); HB.head.PktSize = BitConverter.GetBytes((UInt16)40); HB.head.MsgCount[0] = 1; HB.head.Filter[0] = 0; HB.head.SeqNum = BitConverter.GetBytes(num); HB.head.SendTime = BitConverter.GetBytes(GETTick() * 100); HB.msgType.MsgSize = BitConverter.GetBytes((UInt16)24); HB.msgType.MsgType = BitConverter.GetBytes((UInt16)1000); byte[] request = SerHelper.Serialize(HB); m_wsQClient.Send(request); Console.WriteLine($"heartbeat_{num}:{ByteConvertUtil.byteToHexStr(request)}"); } num++; Thread.Sleep(1500); } }); } }