ノードコントローラー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)
そして、これは正しいですが、呼び出しがない限り