public async Task GetPlayer(int index) { var response = Response; response.Headers.Add("Content-Type", "text/event-stream"); response.Headers.Add("Cache-Control", "no-cache"); response.Headers.Add("Connection", "keep-alive"); PlayerVM currentPlayer = new PlayerVM(); for (var i = 0; true; i = (i + 1) % 100) { PlayerVM player = index == 1 ? _livedata.GetPlayers().playerLeft : _livedata.GetPlayers().playerRight; if (player == null) { player = new PlayerVM(); } if (!player.name.Equals(currentPlayer.name) || !player.deck.Equals(currentPlayer.deck) || !player.score.Equals(currentPlayer.score) || !player.lifePoints.Equals(currentPlayer.lifePoints)) { await response.WriteAsync($"id: ${i}\n"); await response.WriteAsync("event: message\n"); await response.WriteAsync($"data: {JsonConvert.SerializeObject(player)}\n\n"); currentPlayer = new PlayerVM { index = player.index, name = player.name, deck = player.deck, score = player.score, lifePoints = player.lifePoints }; } await response.Body.FlushAsync(); await Task.Delay(200); } }
public ActivePlayers Get() { ActivePlayers players = _liveDataService.GetPlayers(); return(players); }