private void TimerUpdateWorld_Tick(object sender, EventArgs e) { if (!updating) { updating = true; arena.Update(); PanelArena.Refresh(); updating = false; } else { Console.WriteLine("!"); } }
private async Task JoinArena() { using (var socket = new ClientWebSocket()) { try { await socket.ConnectAsync(new Uri("ws://localhost:5000"), CancellationToken.None); } catch (Exception e) { _ = Console.Out.WriteLineAsync(e.ToString()); throw; } _ = Task.Run(() => { while (true) { var line = Console.ReadLine(); var segment = new ArraySegment <byte>(Encoding.UTF8.GetBytes(line)); socket.SendAsync(segment, WebSocketMessageType.Binary, true, CancellationToken.None); } }); while (true) { try { var buf = new byte[4096]; var msg = ""; WebSocketReceiveResult res; do { res = await socket.ReceiveAsync(new ArraySegment <byte>(buf), CancellationToken.None); msg += Encoding.ASCII.GetString(buf, 0, res.Count); } while (!res.EndOfMessage); // await Console.Out.WriteLineAsync($"Received {res.Count} bytes"); var message = JsonConvert.DeserializeObject <Message>(msg); if (message.MessageType == MessageType.GameUpdate) { var gu = (message.Content as JObject).ToObject <GameUpdate>(); WriteGameInfo(gu); _map = gu.Arena; } else { Console.WriteLine(message.Content); } PanelArena.Refresh(); await socket.SendAsync(new ArraySegment <byte>(new[] { (byte)_nextDirection }), WebSocketMessageType.Binary, true, CancellationToken.None); } catch (Exception e) { _ = Console.Out.WriteLineAsync(e.ToString()); } } } }