2
我打算創建一個使用瑞奇和laravel即時消息服務(我發現了一個名爲棘齒項目,棘輪集成到laravel)棘輪與laravel
我的問題是。
- 如何在允許他啓動Web套接字連接之前驗證客戶端。
- 一個用戶可以是多個組的一部分,所以我想創建像Poll_grp_id這樣的通道,並獲取所有用戶組的列表,然後訂閱所有這些Poll_Grp_id通道。我不知道如何去這樣做
我打算創建一個使用瑞奇和laravel即時消息服務(我發現了一個名爲棘齒項目,棘輪集成到laravel)棘輪與laravel
我的問題是。
要回答你的第一個問題:
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
我剛試過你的建議。請看看我發佈的新問題,該消息沒有發送 –