如何使用ZeroMQ和ClankBundle实现“推送到现有站点”?

时间:2013-11-25 19:19:55

标签: php symfony websocket zeromq ratchet

我目前在我的Symfony2应用中使用ClankBundle,需要实现Ratchet文档中提到的Push to an Existing Site功能。但是,我没有找到关于如何使用ClankBundle完成此功能的线索!

我已成功实施了ClankBundle文档中的Topic Handler Setup,但需要一种方法来添加对ZeroMQ的支持。

请您演示(最好是带代码)如何将ZeroMQ与Clankbundle一起使用?

1 个答案:

答案 0 :(得分:1)

我找到了一个可能对你有用的解决方法。

在我的设置中,我有定期服务,需要向主题广播新信息,我有自定义主题处理程序。

首先在定期服务中注入自定义主题处理程序,并在主题处理程序中保存所有已订阅的主题,如下所示:

public function onSubscribe(Conn $conn, $topic)
{
    if (!array_key_exists($topic->getId(), self::$subscribedTopics)) {
        self::$subscribedTopics[$topic->getId()] = $topic;
    }

    $topic->broadcast('connected');
}

public function getSubscribedTopics() {
    return self::$subscribedTopics;
}

定期获取这些主题并在其上广播:

public function tick()
{
    $subscribedTopics = $this->topic->getSubscribedTopics();

    foreach($subscribedTopics as $subscribedTopic) {
        $subscribedTopic->broadcast('yey');
    }
}