private async Task Receive(WebSocket socket) { var playerID = gameServer.FindPlayer(socket)?.PlayerId ?? 0; if (playerID <= 0) { logger.LogInformation($"#### Invalid player ID: {playerID} ####"); return; } logger.LogInformation($"#### Receiving for ID: {playerID} ####"); using (var buffer = bufferManager.GetBuffer()) { try { var result = await socket.ReceiveAsync(buffer.Buffer, CancellationToken.None); while (!result.CloseStatus.HasValue) { HandleMessage(result, playerID, buffer.Buffer); result = await socket.ReceiveAsync(buffer.Buffer, CancellationToken.None); } gameServer.ClosedConnection(playerID); } catch (Exception) { } } }