首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >通过反应计时器调用(棘轮) WampServer方法

通过反应计时器调用(棘轮) WampServer方法
EN

Stack Overflow用户
提问于 2016-07-21 20:50:24
回答 1查看 591关注 0票数 1

我正在设置带有棘轮的WampServer。是否有可能在循环中添加一个计时器,每30秒调用一次WampServer的方法?

我尝试了以下代码:

代码语言:javascript
复制
public function addMonitoringTimer(){

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

} 

但似乎没有计时器起作用。

注意:由于这段代码是一个类方法,所以$this是对类对象的引用,该类对象具有对WampServer ($ this -> WampServer )和WampServer使用的循环($this->循环)的引用。我正在调用的方法不是WampServerInterface的一部分。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-11-20 10:20:37

假设Pusher是实现WampServerInterface的clas。我们在Pusher中定义了一个自定义(不是接口的一部分)方法onMessageToPush()。

代码语言:javascript
复制
class Pusher implements WampServerInterface {
    ...
    public function onMessageToPush(){
        ...
    }
    ...
}

现在,创建一个React循环:

代码语言:javascript
复制
$loop  = \React\EventLoop\Factory::create();

,我们设置了一个websocket服务器对象:

代码语言:javascript
复制
$webSock = new \React\Socket\Server($loop);
$webSock->listen($bindPort, $bindIp);

,我们创建了WampServer对象:

代码语言:javascript
复制
$pusher = new Pusher();
$wampServer = new \Ratchet\Wamp\WampServer(
    $pusher
);

我们使用上述wamp服务器、web套接字和循环设置I/O服务器:

代码语言:javascript
复制
$ioserver = new \Ratchet\Server\IoServer(
      new \Ratchet\Http\HttpServer(
        new \Ratchet\WebSocket\WsServer(
                $wampServer
            )
      ),
      $webSock,
    $loop
);

现在我们可以定义一个定时器来调用我们的自定义方法:

代码语言:javascript
复制
$loop->addPeriodicTimer(30, function() use ($pusher) {
        $message = "my message";
        $pusher->onMessageToPush($message);
});

对于可能对此感兴趣的所有人,我已经构建了一个示例,演示如何使用棘轮实现一些功能,包括在这里可以找到的上述功能:

使用棘轮的例子

票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38514137

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档