2017-03-27 25 views
-1

からクラス「MyApp」を読み込もうとしましたsymfony 2とラチェットとmemcacheをwebsocketチャットプロジェクトに使っていますラチェットはsymfonyでうまくいきました。私は公式ウェブサイトの "hello world"アプリケーションでそれをテストしました 問題は、私はこのライン名前空間

new Chat(new MyApp(), $this->getContainer()), 

を実行したときに、私は

Attempted to load class "MyApp" from namespace 

私のコマンドラインコード

<?php 
// myapplication/src/sandboxBundle/Command/SocketCommand.php 
// Change the namespace according to your bundle 
namespace check\roomsBundle\Command; 
use Ratchet\Session\SessionProvider; 
use Symfony\Component\HttpFoundation\Session\Storage\Handler; 
use Doctrine\Common\Cache\MemcacheCache; 
use Ratchet\App; 

use Symfony\Component\Console\Command\Command; 
use Symfony\Component\Console\Input\InputInterface; 
use Symfony\Component\Console\Output\OutputInterface; 
use Symfony\Component\HttpFoundation\Session\Storage\Handler\MemcacheSessionHandler; 
use Symfony\Component\HttpFoundation\Session\Storage\NativeSessionStorage; 
// Include ratchet libs 
use Ratchet\Server\IoServer; 
use Ratchet\Http\HttpServer; 
use Ratchet\WebSocket\WsServer; 
use Symfony\Bundle\FrameworkBundle\Command\ContainerAwareCommand; 
// Change the namespace according to your bundle 
use check\roomsBundle\Sockets\Chat; 
use Doctrine\ORM\EntityManager; 
use Symfony\Component\HttpFoundation\Session\Session; 

class WsServerCommand extends ContainerAwareCommand 
{ 
    protected function configure() 
    { 
     $this->setName('sockets:start-chat') 
      // the short description shown while running "php bin/console list" 
      ->setHelp("Starts the chat socket demo") 
      // the full command description shown when running the command with 
      ->setDescription('Starts the chat socket demo') 
     ; } 

    protected function execute(InputInterface $input, OutputInterface $output) 
    { 
     $output->writeln([ 
      'Chat socket',// A line 
      '============',// Another line 
      'Starting chat, open your browser.',// Empty line 
     ]); 
     $memcache = new \Memcache; 
     $memcache->connect('localhost', 11211); 

     $session = new SessionProvider(
      new Chat(new MyApp(), $this->getContainer()), 
      new Handler\MemcacheSessionHandler($memcache) 
     ); 

     $server = new App('localhost'); 
     $server->route('/sessDemo', $session); 
     $server->run(); 
    } 
} 
このエラーを取得しています

Chat.phpコード

<?php 
namespace check\roomsBundle\Sockets; 
use tuto\testBundle\Entity\Users; 
use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Request; 
use Ratchet\WebSocket\WsServerInterface; 
use Ratchet\MessageComponentInterface; 
use Ratchet\ConnectionInterface; 
use Symfony\Component\DependencyInjection\ContainerInterface; 
use Doctrine\ORM\EntityManager; 
use Symfony\Component\DependencyInjection\ContainerInterface as Container; 
use Symfony\Component\HttpFoundation\Session\Session; 



/** 
* This component will allow access to user data (FOSUserBundle) 
* for each connection in your Ratchet application. 
*/ 
class Chat implements MessageComponentInterface, WsServerInterface 
{ 
    /** 
    * @var \Ratchet\MessageComponentInterface 
    */ 
    protected $_app; 
    /** 
    * @var \Symfony\Component\DependencyInjection\ContainerInterface 
    */ 
    protected $_container; 
    /** 
    * @param MessageComponentInterface $app 
    * @param ContainerInterface $container 
    */ 
    public function __construct(MessageComponentInterface $app, ContainerInterface $container) 
    { 
     $this->_app = $app; 
     $this->_container = $container; 
    } 
    /** 
    * {@inheritdoc} 
    */ 
    public function onOpen(ConnectionInterface $conn) 
    { 
     if (!isset ($conn->Session) || !$conn->Session instanceof Session) { 
      throw new \RuntimeException('Session is not defined. Make sure that SessionProvider is executed before FOSUserProvider.'); 
     } 
     try { 
      $token  = unserialize($conn->Session->get('_security_main')); 
      $user  = $token->getUser(); 
      $provider = $this->_container->get('fos_user.user_provider.username'); 
      $conn->User = $provider->refreshUser($user); 
     } catch (Exception $ex) { 
      $conn->User = null; 
     } 
     return $this->_app->onOpen($conn); 
    } 

答えて

1

任意の使用のMyAppはありません。あなたのページの上部に。 AppBundle \ Classesを使用しますか?