private async Task AnnouncePokerCardChange(PokerCardChangeRequest request) { var message = new SocketMessage <string> { MessageType = "announce", Payload = $"{request.Name} has changed poker-card to {request.Value}" }; await SendAll(message.ToJson()); }
private async Task HandlePokerCardChangeRequest(PokerCardChangeRequest request) { var thePokerCard = _pokerCards.FirstOrDefault(sq => sq.Name == request.Name); if (thePokerCard == null) { thePokerCard = new PokerCard() { Disabled = request.Disabled, Name = request.Name }; _pokerCards.Add(thePokerCard); } thePokerCard.Value = request.Value; await SendPokerCardsToAll(); await AnnouncePokerCardChange(request); }
public async Task AddUser(WebSocket socket) { try { var name = GenerateName(); var userAddedSuccessfully = _users.TryAdd(name, socket); while (!userAddedSuccessfully) { name = GenerateName(); userAddedSuccessfully = _users.TryAdd(name, socket); } GiveUserTheirName(name, socket).Wait(); AnnounceNewUser(name).Wait(); SendPokerCards(socket).Wait(); while (socket.State == WebSocketState.Open) { var buffer = new byte[1024 * 4]; WebSocketReceiveResult socketResponse; var package = new List <byte>(); do { socketResponse = await socket.ReceiveAsync(new ArraySegment <byte>(buffer), CancellationToken.None); package.AddRange(new ArraySegment <byte>(buffer, 0, socketResponse.Count)); } while (!socketResponse.EndOfMessage); var bufferAsString = System.Text.Encoding.ASCII.GetString(package.ToArray()); if (!string.IsNullOrEmpty(bufferAsString)) { var changeRequest = PokerCardChangeRequest.FromJson(bufferAsString); await HandlePokerCardChangeRequest(changeRequest); } } await socket.CloseAsync(WebSocketCloseStatus.NormalClosure, "", CancellationToken.None); } catch (Exception ex) { } }