1

Ratchet で WampServer をセットアップしています。WampServer のメソッドを 30 秒ごとに呼び出すタイマーをループに追加することは可能ですか?

次のコードを試しました:

public function addMonitoringTimer(){

    $this->loop->addPeriodicTimer(30, function() {
        ...
        $this->wampServer->methodName();
        ...
    });

} 

しかし、タイマーは機能していないようです。

注: このコードはクラス メソッドであるため、$this は、WampServer ($this->wampserver) および WampServer によって使用されるループ ($this->loop) への参照を持つクラス オブジェクトへの参照です。私が呼び出しているメソッドは、WampServerInterface の一部ではありません。

4

1 に答える 1

-1

Pusher が WampServerInterface を実装するクラスであるとしましょう。Pusher でカスタム (インターフェースの一部ではない) メソッド onMessageToPush() を定義します。

class Pusher implements WampServerInterface {
    ...
    public function onMessageToPush(){
        ...
    }
    ...
}

次に、React ループを作成します。

$loop  = \React\EventLoop\Factory::create();

、websocket サーバー オブジェクトをセットアップします。

$webSock = new \React\Socket\Server($loop);
$webSock->listen($bindPort, $bindIp);

、WampServer オブジェクトを作成します。

$pusher = new Pusher();
$wampServer = new \Ratchet\Wamp\WampServer(
    $pusher
);

上記の wamp サーバー、Web ソケット、ループを使用して I/O サーバーをセットアップします。

$ioserver = new \Ratchet\Server\IoServer(
      new \Ratchet\Http\HttpServer(
        new \Ratchet\WebSocket\WsServer(
                $wampServer
            )
      ),
      $webSock,
    $loop
);

これで、カスタム メソッドを呼び出すタイマーを定義できます。

$loop->addPeriodicTimer(30, function() use ($pusher) {
        $message = "my message";
        $pusher->onMessageToPush($message);
});

これに興味があるかもしれないすべての人のために、上記の機能を含むいくつかの機能を Ratchet で実装する方法を示す例を作成しました。ここで見つけることができます:

ラチェット使用例

于 2016-11-20T10:20:37.253 に答える