国产+高潮+在线,国产 av 仑乱内谢,www国产亚洲精品久久,51国产偷自视频区视频,成人午夜精品网站在线观看

關(guān)于“如何在php后端及時推送消息給客戶端”文章的疑問

蝸牛

在這篇http://wenda.workerman.net/?/question/508文章中,我按照 walkor 上面的給的案例與步驟來做,最后用把
// 建立socket連接到內(nèi)部推送端口
$client = stream_socket_client('tcp://127.0.0.1:5678', $errno, $errmsg, 1);
// 推送的數(shù)據(jù),包含uid字段,表示是給這個uid推送
$data = array('uid'=>'uid1', 'percent'=>'88%');
// 發(fā)送數(shù)據(jù),注意5678端口是Text協(xié)議的端口,Text協(xié)議需要在數(shù)據(jù)末尾加上換行符
fwrite($client, json_encode($data)."\n");
// 讀取推送結(jié)果
echo fread($client, 8192);
這段代碼放到test1.php文件,使用php test1.php start,發(fā)現(xiàn)輸出是fail,后來我跟蹤,
發(fā)現(xiàn)在google瀏覽器按f12后,輸入如下代碼:

var ws = new WebSocket('ws://127.0.0.1:1234');
 ws.onopen = function(){
     var uid = 'uid1';
     ws.send(uid);
 };
 ws.onmessage = function(e){
     alert(e.data);
 };

連接的時候并未進入以下這段代碼:

$worker->onMessage = function($connection, $data)use($worker)
 {
     // 判斷當(dāng)前客戶端是否已經(jīng)驗證,既是否設(shè)置了uid
     if(!isset($connection->uid))
     {
        // 沒驗證的話把第一個包當(dāng)做uid(這里為了方便演示,沒做真正的驗證)
       $connection->uid = $data;
        /* 保存uid到connection的映射,這樣可以方便的通過uid查找connection,
        * 實現(xiàn)針對特定uid推送數(shù)據(jù)
        */
        $worker->uidConnections = $connection;
        return;
     }
 };

那么請問,這個如何uid是如何得到的?謝謝!

4279 4 0
4個回答

蝸牛

我發(fā)送不知道為什么,我使用google瀏覽器的f12調(diào)試,直接在命令行輸入ws.send('uid');服務(wù)可以接收數(shù)據(jù),但執(zhí)行ws.onopen = function(){ var uid = 'uid1'; ws.send(uid); };這條語句中send沒有發(fā)送數(shù)據(jù)給服務(wù)器,所以造成php后臺在執(zhí)行以下語句后
// 建立socket連接到內(nèi)部推送端口
$client = stream_socket_client('tcp://127.0.0.1:5678', $errno, $errmsg, 1);
// 推送的數(shù)據(jù),包含uid字段,表示是給這個uid推送
$data = array('uid'=>'uid1', 'percent'=>'88%');
// 發(fā)送數(shù)據(jù),注意5678端口是Text協(xié)議的端口,Text協(xié)議需要在數(shù)據(jù)末尾加上換行符
fwrite($client, json_encode($data)."\n");
// 讀取推送結(jié)果
echo fread($client, 8192);
返回的都是fail語句。

  • 暫無評論
walkor 打賞

http://wenda.workerman.net/?/question/508

里面的代碼很多人在用了,沒問題的,估計你哪里沒理解對或者搞烏龍了

  • 暫無評論
six

信老大,得永生

  • 暫無評論
蝸牛

這個是我測試得出來的結(jié)果,因為我直接和硬件交互的時候,發(fā)現(xiàn)push.php文件是可以收到數(shù)據(jù)的,但用google來測試,發(fā)送“ws.onopen = function(){ var uid = 'uid1'; ws.send(uid); };”這個指令的時候,push.php文件竟然沒有把uid輸出來。

  • 暫無評論
年代過于久遠,無法發(fā)表回答
??