1

ノードコントローラーsymfony https://github.com/bazo/temboを介して呼び出しを行うために、このバンドルを試しています

しかし、私は使用するために例外を追加する必要がありました

ノードで関数「barno」を呼び出したい

Node.js

var app = require('express')()
    , server = require('http').createServer(app)
    , io = require('socket.io').listen(server);

server.listen(9001);

io.sockets.on('connection', function (socket) {
    socket.emit('news', { hello: 'world' });
    socket.emit('news2', { hello: 'world2' });


    socket.on('message', function(data){
        socket.broadcast.emit('broadcast-action', data);
    });

    socket.on('barno', function(data) {
        console.dir(data);
        socket.emit('barno', {profilo_da_seguire: '100'});

    });
});

私のコントローラー

$client = new SocketIOClient('http://localhost:9001');

        $client->connect();

        //emit event
        $args = ['nome' => 'alessio'];
        $client->emit('barno', $args);

        $received = 'barno';
        $pippo = array();
        try {
            $client->listen(function($event, Message $message = null) use (&$received, &$pippo) {
                if($message !== null) {
                    if ($message->getName() == $received) {
                   $gino = $message->getArgs();
                        if (!is_object($gino[0])) {
                            $args = json_decode(current($message->getArgs()));
                        }else{
                         $args = $message->getArgs();
                            $pippo[] = $args[0];
                        }

                        throw new \Exception('Load');
                    }
                    /*$message = sprintf('packet: %d, time: %f, heartbeats: %d', $args->packet, $args->time, $args->heartbeats);
                    writeDebug($message);*/
                }
            });
        } catch (\RuntimeException $e) {
            echo $e->getMessage();
        } catch (\Exception $e) {

        }

        //var_dump($pippo);

        foreach ($pippo as $i => $pluto) {
            $pippo[$i]->nome= 'barno';
        }

        $client->disconnect(1);


        return array(
            'pippo' => $pippo
        );
    }

コードがここに到着すると、Xdebugが表示されます

 if ($message->getName() == $received) 

私はこれらの呼び出しを持っています

$message->getName() = "news"
$message->getName() = "news2"
$message->getName() = "barno"

関数 Barno のみを呼び出したいのですが、どうすればよいですか?

これを追加するよりも

throw new \Exception('Load');

コードがループに入ったため

結果は

    array (size=1)
  0 => 
    object(stdClass)[53]
      public 'profilo_da_seguire' => string '100' (length=3)
      public 'nome' => string 'barno' (length=5)

そして、これは正しいですが、呼び出しがない限り

4

2 に答える 2