diff --git a/config/websockets.php b/config/websockets.php index 74075b5..8543b99 100644 --- a/config/websockets.php +++ b/config/websockets.php @@ -80,6 +80,14 @@ return [ */ 'delete_statistics_older_than_days' => 60, + /* + * By default, the websockets server attempts to connect to whatever + * your APP_URL is set to. If running in a more complex environment, + * you may wish to override the base URL for internal requests to + * allow statistics to be collected. + */ + 'base_url_override' => null, + /* * Use an DNS resolver to make the requests to the statistics logger * default is to resolve everything to 127.0.0.1. diff --git a/src/Statistics/Logger/HttpStatisticsLogger.php b/src/Statistics/Logger/HttpStatisticsLogger.php index a23f7a9..ef61b94 100644 --- a/src/Statistics/Logger/HttpStatisticsLogger.php +++ b/src/Statistics/Logger/HttpStatisticsLogger.php @@ -65,6 +65,19 @@ class HttpStatisticsLogger implements StatisticsLogger return $this->statistics[$appId]; } + protected function getUrl(): string + { + $action = [WebSocketStatisticsEntriesController::class, 'store']; + + $url_override = config('websockets.statistics.base_url_override', null); + + if ($url_override !== null) { + return $url_override.action($action, [], false); + } + + return action($action); + } + public function save() { foreach ($this->statistics as $appId => $statistic) { @@ -79,7 +92,7 @@ class HttpStatisticsLogger implements StatisticsLogger $this ->browser ->post( - action([WebSocketStatisticsEntriesController::class, 'store']), + $this->getUrl(), ['Content-Type' => 'application/json'], stream_for(json_encode($postData)) );