From a4758c5ea269192eaf6f70a41da5f57d663b0648 Mon Sep 17 00:00:00 2001 From: bluesaxman Date: Wed, 9 Sep 2020 16:00:55 -0600 Subject: [PATCH] NOT IN A FINISHED STATE, added half of the update command to the websocket server --- Server/server.pl | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) diff --git a/Server/server.pl b/Server/server.pl index e0ae416..9ee5843 100755 --- a/Server/server.pl +++ b/Server/server.pl @@ -93,11 +93,13 @@ sub shuffleHand { sub addUser { my ($sessionID,$userID) = @_; + if (grep( /$userID/, keys $sessions{$sessionID}{"users"})) { print "ERROR: Duplicate user\n"; return 0; } $sessions{$sessionID}{"users"}{$userID} = { name => "$userID", hands => {} }; addHand($sessionID,$userID,"default"); + return 1; } sub addCards { @@ -271,7 +273,9 @@ sub joinSession { return 0; } } - addUser($sessionID,$userID); + unless (addUser($sessionID,$userID)) { + #assume rejoining user + } return 1; } @@ -298,6 +302,7 @@ my $server = Net::WebSocket::Server->new( if (defined($messageData->{user})) { $conn->{user} = $messageData->{user}; + # Need to check if userID is unique $conn->send_utf8('{"info":"user success"}'); } if (defined($messageData->{session})) { @@ -306,7 +311,36 @@ my $server = Net::WebSocket::Server->new( $conn->send_utf8('{"info":"session success", "request":"join"}'); } if (defined($messageData->{action})) { - if ("join" == $messageData->{action}) { if (joinSession($conn->{session},$conn->{user})) { $conn->send_utf8('{"info":"join success"}'); } } + if ("join" == $messageData->{action}) { if (joinSession($conn->{session},$conn->{user})) { $conn->send_utf8('{"info":"join success", "request":"update"}'); } } + my $sessionID = $conn->{session}; + if ("update" == $messageData->{action}) { for ($conn->server->connections) { if ($_->{session} == $conn->{session}) { + # Update all connections joined to this session. + # User List + my @users = getUsers($sessionID); + my @userNames = []; + for (@users) { + push(@userNames,getUserName($sessionID,$_); + } + $_->send_utf8('{"users":['.join(",",getUsers(@userNames)).']}'); + # Deck List + my @decks = getDecks($sessionID); + my %deckStats = {}; + for (@decks) { + $deckStats{$_} = getDeckSize($sessionID,$_); + } + $_->send_utf8('{"decks":'.to_json().'}'); + # Each decks count + $_->send_utf8('{}'); + # Pool List + $_->send_utf8('{}'); + # Top card in each pool + $_->send_utf8('{}'); + # Users Hands + $_->send_utf8('{}'); + # for each hand + # each card (so we scale better) + $_->send_utf8('{}'); + }}} } }, disconnect => sub {