私は Websocket サーバーを稼働させています。私自身の使用のために、静的 PHP スクリプトを実行したときに接続済みのリストを取得したいと考えています。
私のPHPスクリプトpull.php:
$context = new ZMQContext();
$socket = $context->getSocket(ZMQ::SOCKET_REQ);
$socket->connect("tcp://localhost:5552");
$socket->send('data');
$test = $socket->recv();
var_dump($test);
次に、サーバースクリプトで:
<?php
require './vendor/autoload.php';
$loop = React\EventLoop\Factory::create();
$pusher = new MyApp\Pusher;
$context = new React\ZMQ\Context($loop);
$pull = $context->getSocket(ZMQ::SOCKET_REP);
$pull->bind('tcp://127.0.0.1:5552');
$pull->on('message', array($pusher, 'onPull'));
$pull->recv();
$pull->send('response');
$webSock = new React\Socket\Server($loop);
$webSock->listen(8080, '0.0.0.0');
$webServer = new Ratchet\Server\IoServer(
new Ratchet\Http\HttpServer(
new Ratchet\WebSocket\WsServer(
$pusher
)
),
$webSock
);
$loop->run();
そのため、サーバー スクリプトが実行されているときに、pull.php. responseこれは機能し、私が出力したテキストを送り返しますvar_dump。ただし、その後pull.phpスクリプトをリロードすると、ハングするだけです。理由はわかりませんが、どこかでデータを受信したことを相手に伝えていないため、別の要求を送信できないと想定しています。
また、現在、データをPusher クラスのメソッドに$pull->on('message', array($pusher, 'onPull'));送信しています。onPull()現時点では何も返しませんが、データを返す場合、これをリクエスタに戻すにはどうすればよいですか?