棘轮与laravel
问题描述:
我打算创建一个使用瑞奇和laravel即时消息服务(我发现了一个名为棘齿项目,棘轮集成到laravel)棘轮与laravel
我的问题是。
- 如何在允许他启动Web套接字连接之前验证客户端。
- 一个用户可以是多个组的一部分,所以我想创建像Poll_grp_id这样的通道,并获取所有用户组的列表,然后订阅所有这些Poll_Grp_id通道。我不知道如何去这样做
答
要回答你的第一个问题:
public function onSubscribe(ConnectionInterface $conn, $topic, $userKey) {
//check if the userKey is correct for that user, ...
}
我用这个自己与APIKey,每一次用户订阅,他们送了$ USERKEY与它对象。
该对象仅包含用户id,apiKey,...(无论你需要验证用户)
第二个问题:
//从socketo.me代码来举个例子
protected $subscribedTopics = array();
public function onSubscribe(ConnectionInterface $conn, $topic) {
$this->subscribedTopics[$topic->getId()] = $topic;
}
/**
* @param string JSON'ified string we'll receive from ZeroMQ
*/
public function onBlogEntry($entry) {
$entryData = json_decode($entry, true);
// If the lookup topic object isn't set there is no one to publish to
if (!array_key_exists($entryData['category'], $this->subscribedTopics)) {
return;
}
$topic = $this->subscribedTopics[$entryData['category']];
// re-send the data to all the clients subscribed to that category
$topic->broadcast($entryData);
}
在此,你会改变onSubscribe($conn, $topic)
到onSubscribe($conn, $topicArray)
然后你会得到从阵列中的所有单独的“通道”并将它们添加到$subscribedTopics
当您尝试送东西给那些“渠道” /“主题”,然后将其发送给所有连接的客户端,在有特定通道的$topicArray
我希望这帮助。
说我在另一个控制器上做了一些操作。我如何从实现MessageComponentInterface的类中调用方法来向客户端发送字符串? –
因为你想从其他方法调用它,我建议你检查一下socketo.me教程的pushserver部分。这让您可以通过套接字从服务器代码中推送数据。 – mitchken
我刚试过你的建议。请看看我发布的新问题,该消息没有发送 –