İlk önce bir hizmet oluşturmalısınız. Varlık yöneticinizi ve diğer bağımlılıkları enjekte etmek istiyorsanız, orada yapın. src yılında
/BenimUygulamam/MyBundle/Kaynaklar/config/services.yml:
services:
chat:
class: MyApp\MyBundle\Chat
arguments:
- @doctrine.orm.default_entity_manager
Ve src
/Uygulamam/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 ...
Sonra, bir konsol yapmak sunucuyu çalıştırmak için komut.
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();
}
}
src/BenimUygulamam/MyBundle/Komut/ServerCommand.php yılında
Şimdi bağımlılık enjeksiyonu ile Sohbet sınıf var ve bir konsol komutu olarak sunucuyu çalıştırabilir. Bu yardımcı olur umarım!
Cevabınız için teşekkürler, benim için çalışıyor. – Ajouve
Bunu ortalama bir php barındırma hizmeti üzerinde nasıl çalıştıracağınıza dair herhangi bir fikir var mı? Böyle bir limanı açmak mümkün değil, uzun süreler boyunca çalışan bir işlem yapmak da mümkün değil (belki de bir crontab hack ile) – Jens
Sizin için bir port kullanamayacağımı bilmiyorum barındırma hizmeti. Sağlayıcınızla konuşmanız gereken bir şey gibi geliyor! Sunucunuzu nasıl çalıştıracağınıza örnek olarak http://stackoverflow.com/questions/17696344/starting-a-websockets-server-in-php-on-shared-hosting/17705521#17705521 adresine bakabilirsiniz. php kullanarak daemon. Ama eğer symfony kullanıyorsan, Proses bileşenini popen ve passthru yerine kullanırdım. Soruyu sormak isterseniz, kullanacağım kodu gösterebilirim. – mattexx