diff --git a/src/Server/Logger/WebsocketLogger.php b/src/Server/Logger/WebsocketLogger.php index 4a8f0ed..bcbe5ba 100644 --- a/src/Server/Logger/WebsocketLogger.php +++ b/src/Server/Logger/WebsocketLogger.php @@ -56,7 +56,7 @@ class WebsocketLogger extends Logger implements MessageComponentInterface $appId = $connection->client->appId ?? 'Unknown app id'; - $message = "{$appId}: exception `{$exceptionClass}` thrown: `{$exception->getMessage()}`"; + $message = "{$appId}: exception `{$exceptionClass}` thrown: `{$exception->getMessage()}`."; if ($this->verbose) { $message .= $exception->getTraceAsString(); diff --git a/src/WebSockets/Channels/ChannelManager.php b/src/WebSockets/Channels/ChannelManager.php index b8cd4f4..9f4e22f 100644 --- a/src/WebSockets/Channels/ChannelManager.php +++ b/src/WebSockets/Channels/ChannelManager.php @@ -51,8 +51,14 @@ class ChannelManager return; } + /** + * Remove the connection from all channels. + */ collect($this->channels[$connection->client->appId])->each->unsubscribe($connection); + /** + * Unset all channels that have no connections so we don't leak memory. + */ collect($this->channels[$connection->client->appId]) ->reject->hasConnections() ->each(function (Channel $channel, string $channelId) use ($connection) {