2014-11-24 145 views
0

我已經集成了使用棘輪的推杆。向所有用戶廣播工作正常。棘輪客戶端消息

現在我試圖找到一種方式,當我得到它的連接時,如何向特定用戶發送消息。

方法,該方法是在執行訂閱:

public function onSubscribe(ConnectionInterface $conn, $topic) { 
    $conn->send(json_encode("Hello")); 
} 

JS在客戶端:

var conn = new ab.Session('ws://127.0.0.1:8080', 
       function() { 
        conn.subscribe('chat', function(topic, data) { 
         console.log(data); // here I'd like to get that "Hello" message 
        }); 
       }, 
       function() { 
        console.warn('WebSocket connection closed'); 
       }, 
       {'skipSubprotocolCheck': true} 
     ); 

我沒有得到任何消息,我想我還沒有正確格式化它(json_encode( 「你好」))。任何幫助?

回答

0

您需要以某種方式存儲連接,然後直接調用它們。

例如:

$conns[$conn->resourceId] = $conn; 

再後來:

$conns[$resourceId]->write("new data"); 

至於爲什麼你沒有收到關於訂閱,請嘗試write()方法,而不是發送消息()方法。

另外,檢查控制檯,看看你是否收到數據,但沒有正確解包。

+0

調用未定義的方法Ratchet \ Wamp \ WampConnection :: write() 我得到的消息,因爲當我發送它沒有json_encode時,我得到一個錯誤JSON.parse錯誤。但是,當我用json_encode發送它時,我什麼也沒得到 – LTRocky 2014-11-24 21:13:16

+0

哦,我忘了Ratchet擴展了React連接。嗯,給我一點點,我會研究這一點。我對React非常熟悉,但不是Ratchet。 (僅供參考:棘輪建立在React上。) – JRL 2014-11-24 21:14:49