private void HandleHttpConnection() { for (var i = 0; i < _connectingClients.Count; i++) { var connection = _connectingClients[i]; var httpRequest = GetHttpRequest(connection); if (connection.IsTimeout() || !connection.TcpClient.Connected || httpRequest == null) { _connectingClients.RemoveAt(i); i--; continue; } var httpHeaders = GetHttpHeaders(httpRequest); if (httpHeaders.ContainsKey("Sec-WebSocket-Key")) { var responseBytes = CreateConnectionResponse(httpHeaders); try { connection.Stream.WriteAsync(responseBytes, 0, responseBytes.Length); } catch (IOException) { // ignore } var clientConnection = new ClientConnection() { Id = Guid.NewGuid(), TcpClient = connection.TcpClient, Stream = connection.Stream, LastMessage = DateTime.Now }; _socketRepository.AddUnauthorizedConnection(clientConnection); if (i <= _connectingClients.Count - 1) { _connectingClients.RemoveAt(i); i--; } } } }