vendor/gos/web-socket-bundle/src/Pusher/Wamp/WampConnectionFactory.php line 12

Open in your IDE?
  1. <?php declare(strict_types=1);
  2. namespace Gos\Bundle\WebSocketBundle\Pusher\Wamp;
  3. use Gos\Component\WebSocketClient\Wamp\Client;
  4. use Gos\Component\WebSocketClient\Wamp\ClientFactory;
  5. use Gos\Component\WebSocketClient\Wamp\ClientInterface;
  6. use Psr\Log\LoggerAwareInterface;
  7. use Psr\Log\LoggerAwareTrait;
  8. use Symfony\Component\OptionsResolver\OptionsResolver;
  9. trigger_deprecation('gos/web-socket-bundle''3.1''The "%s" class is deprecated and will be removed in 4.0, use "%s" instead.'WampConnectionFactory::class, ClientFactory::class);
  10. /**
  11.  * @deprecated to be removed in 4.0, use Gos\Component\WebSocketClient\Wamp\ClientFactory from the gos/websocket-client package instead
  12.  */
  13. final class WampConnectionFactory implements WampConnectionFactoryInterfaceLoggerAwareInterface
  14. {
  15.     use LoggerAwareTrait;
  16.     private array $config;
  17.     public function __construct(array $config)
  18.     {
  19.         $this->config $this->resolveConfig($config);
  20.     }
  21.     public function createConnection(): ClientInterface
  22.     {
  23.         $client = new Client(
  24.             $this->config['host'],
  25.             $this->config['port'],
  26.             $this->config['ssl'],
  27.             $this->config['origin']
  28.         );
  29.         if (null !== $this->logger) {
  30.             $client->setLogger($this->logger);
  31.         }
  32.         return $client;
  33.     }
  34.     private function resolveConfig(array $config): array
  35.     {
  36.         $resolver = new OptionsResolver();
  37.         $resolver->setRequired(
  38.             [
  39.                 'host',
  40.                 'port',
  41.             ]
  42.         );
  43.         $resolver->setDefaults(
  44.             [
  45.                 'ssl' => false,
  46.                 'origin' => null,
  47.             ]
  48.         );
  49.         $resolver->setAllowedTypes('host''string');
  50.         $resolver->setAllowedTypes('port', ['string''integer']);
  51.         $resolver->setAllowedTypes('ssl''boolean');
  52.         $resolver->setAllowedTypes('origin', ['string''null']);
  53.         return $resolver->resolve($config);
  54.     }
  55. }