私はSymfony2にWebSocketを実装しようとしています、
私はこれを見つけました 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クラスが作成され、サーバーをコンソールコマンドとして実行できます。お役に立てれば!