|
5 | 5 | use React\Socket\Connector; |
6 | 6 | use Clue\React\Buzz\Browser; |
7 | 7 | use Illuminate\Console\Command; |
| 8 | +use React\Dns\Config\Config as DnsConfig; |
8 | 9 | use React\EventLoop\Factory as LoopFactory; |
| 10 | +use React\Dns\Resolver\Factory as DnsFactory; |
| 11 | +use React\Dns\Resolver\Resolver as ReactDnsResolver; |
9 | 12 | use BeyondCode\LaravelWebSockets\Statistics\DnsResolver; |
10 | 13 | use BeyondCode\LaravelWebSockets\Facades\StatisticsLogger; |
11 | 14 | use BeyondCode\LaravelWebSockets\Facades\WebSocketsRouter; |
@@ -47,7 +50,7 @@ public function handle() |
47 | 50 | protected function configureStatisticsLogger() |
48 | 51 | { |
49 | 52 | $connector = new Connector($this->loop, [ |
50 | | - 'dns' => new DnsResolver(), |
| 53 | + 'dns' => $this->getDnsResolver(), |
51 | 54 | 'tls' => [ |
52 | 55 | 'verify_peer' => config('app.env') === 'production', |
53 | 56 | 'verify_peer_name' => config('app.env') === 'production', |
@@ -123,4 +126,20 @@ protected function startWebSocketServer() |
123 | 126 | ->createServer() |
124 | 127 | ->run(); |
125 | 128 | } |
| 129 | + |
| 130 | + protected function getDnsResolver(): ReactDnsResolver |
| 131 | + { |
| 132 | + if (! config('websockets.statistics.perform_dns_lookup')) { |
| 133 | + return new DnsResolver; |
| 134 | + } |
| 135 | + |
| 136 | + $dnsConfig = DnsConfig::loadSystemConfigBlocking(); |
| 137 | + |
| 138 | + return (new DnsFactory)->createCached( |
| 139 | + $dnsConfig->nameservers |
| 140 | + ? reset($dnsConfig->nameservers) |
| 141 | + : '1.1.1.1', |
| 142 | + $this->loop |
| 143 | + ); |
| 144 | + } |
126 | 145 | } |
0 commit comments