diff --git a/config/websockets.php b/config/websockets.php index 74075b5c52..8543b99ec1 100644 --- a/config/websockets.php +++ b/config/websockets.php @@ -80,6 +80,14 @@ */ '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 a23f7a9003..d7320253ef 100644 --- a/src/Statistics/Logger/HttpStatisticsLogger.php +++ b/src/Statistics/Logger/HttpStatisticsLogger.php @@ -2,13 +2,13 @@ namespace BeyondCode\LaravelWebSockets\Statistics\Logger; -use Clue\React\Buzz\Browser; -use Ratchet\ConnectionInterface; -use function GuzzleHttp\Psr7\stream_for; use BeyondCode\LaravelWebSockets\Apps\App; +use BeyondCode\LaravelWebSockets\Statistics\Http\Controllers\WebSocketStatisticsEntriesController; use BeyondCode\LaravelWebSockets\Statistics\Statistic; use BeyondCode\LaravelWebSockets\WebSockets\Channels\ChannelManager; -use BeyondCode\LaravelWebSockets\Statistics\Http\Controllers\WebSocketStatisticsEntriesController; +use Clue\React\Buzz\Browser; +use function GuzzleHttp\Psr7\stream_for; +use Ratchet\ConnectionInterface; class HttpStatisticsLogger implements StatisticsLogger { @@ -79,7 +79,7 @@ public function save() $this ->browser ->post( - action([WebSocketStatisticsEntriesController::class, 'store']), + $this->storeStatisticsUrl(), ['Content-Type' => 'application/json'], stream_for(json_encode($postData)) ); @@ -88,4 +88,15 @@ public function save() $statistic->reset($currentConnectionCount); } } + + protected function storeStatisticsUrl(): string + { + $action = [WebSocketStatisticsEntriesController::class, 'store']; + + $overridenUrl = config('websockets.statistics.base_url_override'); + + return $overridentUrl + ? $overridenUrl.action($action, [], false) + : action($action); + } }