NOT IN A FINISHED STATE, added half of the update command to the websocket server

This commit is contained in:
bluesaxman 2020-09-09 16:00:55 -06:00
parent c6944c8667
commit a4758c5ea2

View File

@ -93,11 +93,13 @@ sub shuffleHand {
sub addUser { sub addUser {
my ($sessionID,$userID) = @_; my ($sessionID,$userID) = @_;
if (grep( /$userID/, keys $sessions{$sessionID}{"users"})) { print "ERROR: Duplicate user\n"; return 0; }
$sessions{$sessionID}{"users"}{$userID} = { $sessions{$sessionID}{"users"}{$userID} = {
name => "$userID", name => "$userID",
hands => {} hands => {}
}; };
addHand($sessionID,$userID,"default"); addHand($sessionID,$userID,"default");
return 1;
} }
sub addCards { sub addCards {
@ -271,7 +273,9 @@ sub joinSession {
return 0; return 0;
} }
} }
addUser($sessionID,$userID); unless (addUser($sessionID,$userID)) {
#assume rejoining user
}
return 1; return 1;
} }
@ -298,6 +302,7 @@ my $server = Net::WebSocket::Server->new(
if (defined($messageData->{user})) { if (defined($messageData->{user})) {
$conn->{user} = $messageData->{user}; $conn->{user} = $messageData->{user};
# Need to check if userID is unique
$conn->send_utf8('{"info":"user success"}'); $conn->send_utf8('{"info":"user success"}');
} }
if (defined($messageData->{session})) { if (defined($messageData->{session})) {
@ -306,7 +311,36 @@ my $server = Net::WebSocket::Server->new(
$conn->send_utf8('{"info":"session success", "request":"join"}'); $conn->send_utf8('{"info":"session success", "request":"join"}');
} }
if (defined($messageData->{action})) { 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 { disconnect => sub {