Я пытаюсь реализовать websockets в Symfony2,
Я нашел этот http://socketo.me/, который кажется довольно хорошим.
Я пробовал это из Symfony, и это работает, это был простой вызов с использованием telnet. Но я не знаю, как интегрировать это в Symfony.
Я думаю, что мне нужно создать сервис, но я не знаю, какой вид сервиса и как его вызвать от клиента
Спасибо за вашу помощь.
Сначала вы должны создать сервис. Если вы хотите ввести менеджера сущностей и другие зависимости, сделайте это там.
В src / MyApp / MyBundle / Resources / config / services.yml:
services: chat: class: MyApp\MyBundle\Chat arguments: - @doctrine.orm.default_entity_manager
И в src / MyApp / MyBundle / Chat.php:
class Chat implements MessageComponentInterface { /** * @var \Doctrine\ORM\EntityManager */ protected $em; /** * Constructor * * @param \Doctrine\ORM\EntityManager $em */ public function __construct($em) { $this->em = $em; } // onOpen, onMessage, onClose, onError ...
Затем создайте консольную команду для запуска сервера.
В src / MyApp / MyBundle / Command / ServerCommand.php
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; use Symfony\Component\Console\Input\InputInterface; use Symfony\Component\Console\Output\OutputInterface; use Ratchet\Server\IoServer; class ServerCommand extends ContainerAwareCommand { protected function configure() { $this ->setName('chat:server') ->setDescription('Start the Chat server'); } protected function execute(InputInterface $input, OutputInterface $output) { $chat = $this->getContainer()->get('chat'); $server = IoServer::factory($chat, 8080); $server->run(); } }
Теперь у вас есть класс Chat с зависимыми инъекциями, и вы можете запустить сервер как консольную команду. Надеюсь это поможет!