Ejemplo n.º 1
0
 static void Main(string[] args)
 {
     Console.TreatControlCAsInput = true;
     masterHandler = new MasterHandler(JObject.Parse(File.ReadAllText("config.json")));
     masterHandler.Start();
     while (true)
     {
         if (Console.KeyAvailable)
         {
             var key = Console.ReadKey(true);
             if (key.Key == ConsoleKey.C && key.Modifiers.HasFlag(ConsoleModifiers.Control))
             {
                 masterHandler.Stop();
                 break;
             }
         }
     }
 }
Ejemplo n.º 2
0
 public MultiServerClient(MasterHandler handler, ClientInfo info, WebSocketSession session)
 {
     this.handler = handler;
     this.info    = info;
     this.session = session;
     timeoutTimer = new Timer(x =>
     {
         if (status == ClientWorkerStatus.Connecting)
         {
             session.Close(SuperSocket.SocketBase.CloseReason.TimeOut);
         }
     }, null, 2000, Timeout.Infinite);
     keepAliveSw    = new Stopwatch();
     keepAliveTimer = new Timer(x =>
     {
         if (!session.Connected)
         {
             return;
         }
         lock (keepAliveSw)
         {
             if (!keepAliveSw.IsRunning)
             {
                 keepAliveSw.Start();
             }
             if (keepAliveSw.ElapsedMilliseconds > 5000)
             {
                 handler.Logger.Log($"Client {session.SessionID} is disconnected with idle of {keepAliveSw.ElapsedMilliseconds}");
                 keepAliveSw.Stop();
                 handler.RemoveClient(session.SessionID);
                 session.Close();
                 status = ClientWorkerStatus.None;
                 keepAliveTimer.Change(Timeout.Infinite, Timeout.Infinite);
                 return;
             }
         }
         SendPacket(new SimplePacket()
         {
             Data = new byte[0],
             Type = PacketType.Nop
         });
     }, null, 0, 1000);
 }