我正在设置带有棘轮的WampServer。是否有可能在循环中添加一个计时器,每30秒调用一次WampServer的方法?
我尝试了以下代码:
public function addMonitoringTimer(){
$this->loop->addPeriodicTimer(30, function() {
...
$this->wampServer->methodName();
...
});
} 但似乎没有计时器起作用。
注意:由于这段代码是一个类方法,所以$this是对类对象的引用,该类对象具有对WampServer ($ this -> WampServer )和WampServer使用的循环($this->循环)的引用。我正在调用的方法不是WampServerInterface的一部分。
发布于 2016-11-20 10:20:37
假设Pusher是实现WampServerInterface的clas。我们在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);
});对于可能对此感兴趣的所有人,我已经构建了一个示例,演示如何使用棘轮实现一些功能,包括在这里可以找到的上述功能:
https://stackoverflow.com/questions/38514137
复制相似问题