2016-07-21 19 views
1

Ich richte einen WampServer mit Ratchet ein. Ist es möglich, der Schleife einen Timer hinzuzufügen, der alle 30 Sekunden eine WampServer-Methode aufruft?Aufruf einer (Ratchet) WampServer Methode über einen React Timer

Ich habe den folgenden Code versucht:

public function addMonitoringTimer(){ 

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

} 

aber keine Timer scheint zu funktionieren.

Hinweis: Da dieser Code eine Klassenmethode ist, $ ist dies ein Verweis auf das Klassenobjekt, das Verweise auf den WampServer ($ this-> wampserver) und die vom WampServer verwendete Schleife hat ($ this-> loop) . Die Methode, die ich anrufe, ist nicht Teil des WampServerInterfaces.

Antwort

-1

Nehmen wir an, Pusher ist die Klasse, die das WampServerInterface implementiert. Wir definieren eine benutzerdefinierte Methode (nicht Teil der Schnittstelle) onMessageToPush() in Pusher.

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

Erstellen Sie jetzt eine Reaktion Schleife:

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

, richten wir ein websocket Serverobjekt:

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

schaffen wir die WampServer Objekt:

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

Wir haben einen I/O Server mit th eingerichtet e oben wamp Server, Web-Buchse und Schleife:

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

und jetzt können wir einen Timer definieren, die unsere eigene Methode aufrufen wird:

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

Für alle, die daran interessiert sein kann, habe ich gebaut ein Beispiel, das zeigt, wie einige Funktionen mit Knarre, einschließlich der oben genannten Funktionen implementieren können Sie hier finden:

Example of using Ratchet

+0

Dies bietet keine Antwort auf die Frage. Um einen Autor zu kritisieren oder um Klärung zu bitten, hinterlasse einen Kommentar unter seinem Beitrag. - [Aus Bewertung] (/ review/low-quality-posts/14346856) –

+0

Entschuldigung, aber hier http://StackOverflow.com/Help/self-answer sagt, dass das Bearbeiten der Frage genauso gültig ist wie das Absenden der Antwort. Fehle ich etwas? –

+0

@FranzGeichmann Was meinst du? Ich war der Autor und das Beispiel, das ich anbiete, ruft eine benutzerdefinierte Methode durch einen Timer auf. Sollte ich deutlicher machen, welcher Teil dieses kleinen Beispiels den Job erledigt (Aufruf der benutzerdefinierten Methode über einen Timer)? –