2014-02-16 36 views
0

標題說明了all.Here的我的代碼上:

(Shell script) 
$loop = React\EventLoop\Factory::create(); 
$pusher = new MyApp\Chat; 

//Receiving IPC messages: 
$socket = new React\Socket\Server($loop); 
$socket->on('connection', function ($conn) { 
    $pusher = new MyApp\Chat; 
    echo date('H:i:s'). "!!IPC Connection opened!!\n"; 

    $conn->on('data', array($pusher, 'onUpdate')); 
}); 

$socket->listen(1337, '127.0.0.1'); //Binding to our IP so remotes can't connect. 

echo "%%% IPC listener started succesfully. %%%\n%%%\n"; 

// WebSocket server: 
//here the code is identical to that on the Ratchet 'push-server' tutorial 

...和「的onUpdate」功能.. 。

public function onUpdate($entry) 
{ 
    echo(date('H:i:s'). ": !<<---IPC Data Received.DATA:::". $entry. ":::--->>!\n"); 
    $topic = 'Prime_mover'; 
    $topic->broadcast($entry); 
} 

...的 「onPublish」 功能:

public function onPublish(Conn $conn, $topic, $event, array $exclude, array $eligible) 
{ 
    echo $topic. "\n"; 
    //echo implode(array_keys($topic)). "\n"; 
    $channel = $topic->getId(); 

    if($topic->broadcast($event)) 
    { 
     echo(date('H:i:s') . ": ***A client has published ###" . 
      implode('',  $event) . "### to (((". $channel. ")))***\n"); 
    } else { 
     echo(date('H:i:s'). ": !!<--An error occured during publish-->!!\n"); 
    } 
} 

的客戶端代碼是微不足道的。

我確定這個錯誤,如果有的話(我已經在這裏約10個小時),不居住在那裏。

我通過控制檯確認瀏覽器確實訂閱了「Prime_mover」。這也顯示在CLI上。另外,我已經通過「onPublish」功能發佈了一個按鈕,發佈到此頻道。這工作。

從上面可以看出,我並沒有爲IPC使用ZeroiMQ,因爲我正在使用PHP 5上的Windows計算機進行開發。AFAIK,PHP5中沒有可用的ZeroMQ綁定。

我訴諸於使用裸露的套接字。它們的工作方式同樣精美,我可以在CLI上看到消息確實會傳送給特定的腳本。

「onUpdate」函數通過CLI再次被調用,確認。

我以前曾嘗試使用URL「http:\ example.com \ Prime_mover」,當它沒有工作時,出於絕望,我嘗試了字符串「Prime_mover」。你現在可能正在搖頭 - 我知道,這種方式不行。

我曾嘗試使用$ topica作爲數組太大,不幹活。在這裏想最重要的問題是,什麼樣的對象是$話題,爲什麼不會成爲一個簡單的字符串工作的地方嗎?上午我在這裏錯過了什麼?它是如何正確構建的?

回答

1
$topic = 'Prime_mover'; 
$topic->broadcast($entry); 

$ topic是一個字符串!它沒有任何方法。

+0

謝謝你回答,Sharom。我知道它看起來有多可笑,但是如果你看看棘輪式推送集成教程,並且除非我誤會(我懷疑是這種情況),否則會發生同樣的事情,如下所示:$ topic = $ this-> subscribedTopics [$ entryData [ '貓']; $ topic->廣播(); $ topic分配值「kittensCategory」。 Aplogies沒有正確格式化代碼,目前在mobile.I將不勝感激,如果你爲我清除了這個。 – automaton

+0

沒問題。但我認爲這個話題沒有意義。 –

相關問題