From d091ebbd8288654da3a3e9eddc56b5a9e5cd442e Mon Sep 17 00:00:00 2001 From: "Fabian @ Blax Software" Date: Sat, 21 Mar 2026 10:01:10 +0100 Subject: [PATCH] I last ponged timestamp --- src/Websocket/Handler.php | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/Websocket/Handler.php b/src/Websocket/Handler.php index e90b5f0..4a09955 100644 --- a/src/Websocket/Handler.php +++ b/src/Websocket/Handler.php @@ -181,6 +181,12 @@ class Handler implements MessageComponentInterface MessageInterface $message, string $payload ): void { + // Any received message proves the client is alive — update pong timestamp + // to prevent removeObsoleteConnections() from unsubscribing active connections. + // This is critical because heartbeat pings with unique suffixes (e.g. pusher.ping[abc]) + // bypass tryHandlePingFast() and handlePusherEvent() doesn't call connectionPonged(). + $connection->lastPongedAt = time(); + // Set remote address once (moved from per-message to reduce overhead) if (isset($connection->remoteAddress)) { request()->server->set('REMOTE_ADDR', $connection->remoteAddress);