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 WampConnectionFactoryInterface, LoggerAwareInterface
  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. }