Ich versuche Websockets in Symfony2 zu implementieren,
ich habe das gefunden http://socketo.me/ was ziemlich gut aussieht.
Ich probiere es von Symfony aus und es funktioniert, das war nur ein einfacher Anruf mit Telnet. Aber ich weiß nicht, wie ich das in Symfony integrieren soll.
Ich denke, ich muss einen Dienst erstellen, aber ich weiß nicht wirklich, welche Art von Dienst und wie ich ihn vom Client aus aufrufen soll
Danke für Ihre Hilfe.
Zuerst sollten Sie einen Dienst erstellen. Wenn Sie Ihren Entitätsmanager und andere Abhängigkeiten einfügen möchten, tun Sie dies dort.
In src/MyApp/MyBundle/Resources/config/services.yml:
services:
chat:
class: MyApp\MyBundle\Chat
arguments:
- @doctrine.orm.default_entity_manager
Und in 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 ...
Führen Sie als Nächstes einen Konsolenbefehl aus, um den Server auszuführen.
In 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();
}
}
Jetzt haben Sie eine Chat-Klasse mit Abhängigkeitsinjektionen und können den Server als Konsolenbefehl ausführen. Hoffe das hilft!