connectedUsers as $key => $conn) { if ($conn->resourceId === $id) { unset($this->connectedUsers[$key]); return; } } } public function onOpen(ConnectionInterface $conn): void { $this->connectedUsers[] = $conn; $conn->send("Connected users: " . count($this->connectedUsers) . " (One is you)"); echo "New connection: {$conn->resourceId}\n"; } public function onMessage(ConnectionInterface $from, $msg): void { foreach ($this->connectedUsers as $conn) { if ($from->resourceId !== $conn->resourceId) { $conn->send("From user " . $from->resourceId . ": " . $msg); } } $from->send("Message sent to others"); } 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"; $this->onClose($conn); } } $routes = new RouteCollection(); $routes->add("login", new Route("/login", ["_controller" => new LoginController()])); $routes->add("register", new Route("/register", ["_controller" => new RegisterController()])); $routes->add("ws", new Route("/ws", ["_controller" => new WsServer(new WebSocketServer())])); $server = IoServer::factory( new HttpServer(new Router(new UrlMatcher($routes, new RequestContext()))), 8080, "0.0.0.0" ); Handler::getInstance()->init(); echo "Server running on http://localhost:8080\n"; $server->run();