【问题标题】:How to implement "Push to an Existing Site" using ZeroMQ and ClankBundle?如何使用 ZeroMQ 和 ClankBundle 实现“推送到现有站点”?
【发布时间】:2013-12-10 16:05:02
【问题描述】:
【问题讨论】:
标签:
php
symfony
websocket
zeromq
ratchet
【解决方案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');
}
}