通过 React Timer 调用 (Ratchet) WampServer 方法
Calling a (Ratchet) WampServer method through a React Timer
我正在使用 Ratchet 设置 WampServer。是否可以在循环中添加一个定时器,每 30 秒调用一次 WampServer 的方法?
我试过以下代码:
public function addMonitoringTimer(){
$this->loop->addPeriodicTimer(30, function() {
...
$this->wampServer->methodName();
...
});
}
但似乎没有定时器工作。
注意:由于此代码是一个 class 方法,因此 $this 是对 class 对象的引用,该对象引用了 WampServer ($this->wampserver) 和WampServer ($this->loop)。我调用的方法不是 WampServerInterface 的一部分。
假设 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 服务器、网络套接字和循环设置了一个 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 实现某些功能,包括上述功能您可以在这里找到它:
我正在使用 Ratchet 设置 WampServer。是否可以在循环中添加一个定时器,每 30 秒调用一次 WampServer 的方法?
我试过以下代码:
public function addMonitoringTimer(){
$this->loop->addPeriodicTimer(30, function() {
...
$this->wampServer->methodName();
...
});
}
但似乎没有定时器工作。
注意:由于此代码是一个 class 方法,因此 $this 是对 class 对象的引用,该对象引用了 WampServer ($this->wampserver) 和WampServer ($this->loop)。我调用的方法不是 WampServerInterface 的一部分。
假设 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 服务器、网络套接字和循环设置了一个 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 实现某些功能,包括上述功能您可以在这里找到它: