From 0f3b5ed61ac5008b974426842a7ee93bbf4d8afb Mon Sep 17 00:00:00 2001 From: GitProtogen Date: Thu, 5 Mar 2026 09:51:40 +0100 Subject: [PATCH] no account real time chat working --- bin/server.php | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/bin/server.php b/bin/server.php index cb43faa..3082ab0 100644 --- a/bin/server.php +++ b/bin/server.php @@ -10,27 +10,44 @@ use Ratchet\WebSocket\WsServer; class TestServer implements MessageComponentInterface { + private array $connectedUsers = []; + private function deleteGivenId(int $id): void + { + foreach ($this->connectedUsers as $key => $conn) { + if ($conn->resourceId === $id) { + unset($this->connectedUsers[$key]); + return; + } + } + } public function onOpen(ConnectionInterface $conn): void { - $conn->send('Hello World!'); + $this->connectedUsers[] = $conn; + $conn->send("Connected users: " . count($this->connectedUsers)); echo "New connection: {$conn->resourceId}\n"; } public function onMessage(ConnectionInterface $from, $msg): void { - $from->send("You said: $msg"); + $from->send("Resending: $msg"); + foreach ($this->connectedUsers as $conn) { + if ($from->resourceId !== $conn->resourceId) { + $conn->send("From user " . $from->resourceId . ": " . $msg); + } + } } public function onClose(ConnectionInterface $conn): void { + $this->deleteGivenId($conn->resourceId); echo "Connection {$conn->resourceId} closed\n"; } public function onError(ConnectionInterface $conn, \Exception $e): void { echo "Error: {$e->getMessage()}\n"; - $conn->close(); + $this->onClose($conn); } }