public function __construct($url, LoopInterface $loop, LoggerInterface $logger, array $streamOptions = null)
{
$this->logger = $logger;
$this->loop = $loop;
$this->streamOptions = $streamOptions;
$parts = parse_url($url);
$this->url = $url;
if (in_array($parts['scheme'], array('ws', 'wss')) === false) {
throw new WebSocketInvalidUrlScheme();
}
$dnsResolverFactory = new \React\Dns\Resolver\Factory();
$server = false === getenv('DNS_SERVER') ? '8.8.8.8' : getenv('DNS_SERVER');
$this->dns = $dnsResolverFactory->createCached($server, $loop);
}