Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
43
Task/Chat-server/Raku/chat-server.raku
Normal file
43
Task/Chat-server/Raku/chat-server.raku
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
react {
|
||||
my %connections;
|
||||
|
||||
whenever IO::Socket::Async.listen('localhost', 4004) -> $conn {
|
||||
my $name;
|
||||
|
||||
$conn.print: "Please enter your name: ";
|
||||
|
||||
whenever $conn.Supply.lines -> $message {
|
||||
if !$name {
|
||||
if %connections{$message} {
|
||||
$conn.print: "Name already taken, choose another one: ";
|
||||
}
|
||||
else {
|
||||
$name = $message;
|
||||
%connections{$name} = $conn;
|
||||
broadcast "+++ %s arrived +++", $name;
|
||||
}
|
||||
}
|
||||
else {
|
||||
broadcast "%s> %s", $name, $message;
|
||||
}
|
||||
LAST {
|
||||
broadcast "--- %s left ---", $name;
|
||||
%connections{$name}:delete;
|
||||
$conn.close ;
|
||||
}
|
||||
QUIT {
|
||||
default {
|
||||
say "oh no, $_";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
sub broadcast ($format, $from, *@message) {
|
||||
my $text = sprintf $format, $from, |@message;
|
||||
say $text;
|
||||
for %connections.kv -> $name, $conn {
|
||||
$conn.print: "$text\n" if $name ne $from;
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue