Ejemplo n.º 1
0
        public void Run()
        {
            IsRunning = true;

            using (var socket = new RequestSocket())
            {
                socket.Options.Linger = TimeSpan.Zero;

                socket.Connect(clientAddress.ZmqAddress + ":" + GlobalConstants.TcpIpPort.Heartbeat);

                while (!stopRunning)
                {
                    Thread.Sleep((int)GlobalConstants.HeartbeatIntverval);

                    if (stopRunning)
                    {
                        break;
                    }

                    socket.SendNetworkMsg(new HeartbeatRequest(sessionId));

                    var response = socket.ReceiveNetworkMsg(TimeSpan.FromMilliseconds(GlobalConstants.ServerWaitTimeForHeartbeatResponse));

                    if (response != null)
                    {
                        if (((HeartbeatResponse)response).SessionId == sessionId)
                        {
                            continue;
                        }
                    }

                    if (stopRunning)
                    {
                        break;
                    }

                    ClientVanished?.Invoke(sessionId);
                    break;
                }
            }

            IsRunning = false;
        }
Ejemplo n.º 2
0
 private void HeartbeatOnClientVanished(ConnectionSessionId connectionSessionId)
 {
     ClientVanished?.Invoke(connectionSessionId);
 }