如何在Symfony2中正确使用webSockets



我正在尝试在Symfony2、中实现websocket

我发现了这个http://socketo.me/看起来不错。

我在Symfony上试用过,它很有效,这只是一个使用telnet的简单调用。但我不知道如何将其集成到Symfony中。

我想我必须创建一个服务,但我真的不知道哪种服务以及如何从客户端调用它

谢谢你的帮助。

首先应该创建一个服务。如果您想注入实体管理器和其他依赖项,请在那里执行。

在src/MyApp/MyBundle/Resources/config/services.yml:中

services:
    chat:
        class: MyAppMyBundleChat
        arguments: 
            - @doctrine.orm.default_entity_manager

在src/MyApp/MyBundle/Chat.php中:

class Chat implements MessageComponentInterface {
    /**
     * @var DoctrineORMEntityManager
     */
    protected $em;
    /**
     * Constructor
     *
     * @param DoctrineORMEntityManager $em
     */
    public function __construct($em)
    {
        $this->em = $em;
    }
    // onOpen, onMessage, onClose, onError ...

接下来,制作一个控制台命令来运行服务器。

在src/MyApp/MyBundle/Command/ServerCommand.php 中

use SymfonyBundleFrameworkBundleCommandContainerAwareCommand;
use SymfonyComponentConsoleInputInputInterface;
use SymfonyComponentConsoleOutputOutputInterface;
use RatchetServerIoServer;
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类,您可以将服务器作为控制台命令运行。希望这能有所帮助!

相关内容

  • 没有找到相关文章

最新更新