private void Listen() { ThreadPool.QueueUserWorkItem(_ => { while (_isListening) { var session = new WebSocketSession(_tcpListener.AcceptTcpClient()); session.HandshakeCompleted += (__, ___) => { Console.WriteLine($"{session.Id}| Handshake Valid."); Clients.Add(session); }; session.Disconnected += (__, ___) => { Console.WriteLine($"{session.Id}| Disconnected."); Clients.Remove(session); ClientDisconnected?.Invoke(this, session); session.Dispose(); }; Console.WriteLine($"{session.Id}| Connected."); ClientConnected?.Invoke(this, session); session.Start(); } _tcpListener.Stop(); }); }
public void Listen(int port) { if (_listening) { throw new Exception("Already listening!"); } _listening = true; var server = new TcpListener(IPAddress.Any, port); server.Start(); Console.WriteLine("WS Server - UP"); ThreadPool.QueueUserWorkItem(_ => { while (_listening) { var session = new WebSocketSession(server.AcceptTcpClient()); session.HandshakeCompleted += (__, ___) => { Console.WriteLine($"{session.Id}| Handshake Valid."); Clients.Add(session); }; session.Disconnected += (__, ___) => { Console.WriteLine($"{session.Id}| Disconnected."); Clients.Remove(session); ClientDisconnected?.Invoke(this, session); session.Dispose(); }; Console.WriteLine($"{session.Id}| Connected."); ClientConnected?.Invoke(this, session); session.Start(); } server.Stop(); }); }