From b9b2a9a9568e9a33781ff865e60d20c8f65caee3 Mon Sep 17 00:00:00 2001 From: Yvo Brevoort Date: Mon, 9 Feb 2026 17:41:40 +0100 Subject: [PATCH] add try/catch to make sure we send to all clients instead of stopping when one fails --- server/server.php | 21 +++++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/server/server.php b/server/server.php index 4e3c78f..7b00552 100644 --- a/server/server.php +++ b/server/server.php @@ -80,7 +80,11 @@ public function onText( echo "Client pub for $body\n"; if (isset($this->subscriptions[$body])) { foreach ( $this->subscriptions[$body] as $client ) { - $client->send(new \WebSocket\Message\Text("pub $body")); + try { + $client->send(new \WebSocket\Message\Text("pub $body")); + } catch (\Throwable $e) { + echo "> ERROR SENDING: {$e->getMessage()}\n"; + } } } break; @@ -90,7 +94,11 @@ public function onText( if ( $connection->getRemoteName() == $client->getRemoteName() ) { continue; } - $client->send(new \WebSocket\Message\Text("Client " . $connection->getRemoteName() . " said $message\n")); + try { + $client->send(new \WebSocket\Message\Text("Client " . $connection->getRemoteName() . " said $message\n")); + } catch (\Throwable $e) { + echo "> ERROR SENDING: {$e->getMessage()}\n"; + } } break; } @@ -134,6 +142,15 @@ public function onError( ) { $name = $connection ? "[{$connection->getRemoteName()}]" : "[-]"; echo "> {$name} Error: {$exception->getMessage()}\n"; + echo "Client " . $connection->getRemoteName() . " errored - disconnecting\n"; + foreach ($this->subscriptions as $url => $subscribers) { + foreach ($subscribers as $key => $client) { + if ($client->getRemoteName() == $connection->getRemoteName()) { + echo "Removing subscription for $url\n"; + unset($subscribers[$url][$key]); + } + } + } } public function createServer() {