-
-
Notifications
You must be signed in to change notification settings - Fork 141
Open
Description
Description
The function TopicPeriodicTimerInterface::registerPeriodicTimer takes a Topic parameter, but once the first Topic registers a timer, it is not called for any additional Topic. Furthermore, if any one Topic has zero connections, any and all timers registered within the TopicInterface are cleared.
Example code
<?php
namespace App\Websocket\Topic;
use Gos\Bundle\WebSocketBundle\Topic\TopicPeriodicTimerInterface;
use Gos\Bundle\WebSocketBundle\Topic\TopicPeriodicTimerTrait;
use Ratchet\Wamp\Topic;
class AcmePeriodicTopic extends AcmeTopic implements TopicPeriodicTimerInterface
{
use TopicPeriodicTimerTrait;
public function registerPeriodicTimer(Topic $topic): void
{
// Adds the periodic timer the first time a client connects to the topic
$this->periodicTimer->addPeriodicTimer(
$this,
'hello',
300,
function () use ($topic) {
$topic->broadcast('Hello world');
}
);
}
/**
* Name of the topic.
*/
public function getName(): string
{
return 'acme.periodic.topic';
}
}Steps
- client 1 subscribes to
acme/foo - timer is registered for
acme/foo - client 2 subscribes to
acme/bar - timer isn't registered for
acme/bar - client 2 unsubscribes from
acme/bar - timer is cleared for
acme/foo
Metadata
Metadata
Assignees
Labels
No labels