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

Worker web 與Worker Socket交互

wuchuguang

情況是這樣的:

$web = new WebServer();
$app = new Worker("xxx://0.0.0.0:8383")

啟動后另一個客戶端連接了這個$app的端口,
$clientA $clientB $clientC

web有個login.php頁面,想在這里直接給寫xxx協(xié)議給$clientA或$ClientB或$ClientC任意一個客戶端發(fā)消息。

別人都說用GateWay可以做到,我也下了小蝌蚪源碼來看,感覺并不是我說的這個功能,從配置上來說都比我說的業(yè)務(wù)麻煩很多。
我自已也寫了個把$ClientA ..C存到Store里去,但$clientA是用AsynTcpConnection做的,有onMessage,onClose這些匿名函數(shù),存不了Store

3802 2 0
2個回答

walkor 打賞

web 的login.php 里面建立一個socket,連$app worker,然后按照你的協(xié)議約定個格式,發(fā)送數(shù)據(jù)。
比如格式為 {"type":"send_to_client", "client":"clientA", "content":"blabla..."},$app收到這個格式的數(shù)據(jù),就知道是給clientA發(fā)送數(shù)據(jù)"balbal...",然后找到clientA的connection 發(fā)送即可

  • wuchuguang 2015-05-19

    $app worker這邊收到數(shù)據(jù)后,$app這邊怎么找到ClientA..C。因?yàn)檫@里是worker->onMessage(TcpConnection $conn, $data)
    {

    }

walkor 打賞

給你個代碼片段

$app = new Worker('websocket://0.0.0.0:8484');
$app->onMessage = function($connection, $data){
    global $conn_array;
    // 假設(shè)data中傳遞了uid
    $uid = $data;
    // 這樣就把uid到connection的關(guān)系映射起來了
    $conn_array = $connection;
};

// 給某個uid推送
function send_to_uid($uid, $data)
{
    global $conn_array;
    $conn_array->send($data);
}

// 廣播
function broadcast($data)
{
    global $conn_array;
    foreach($conn_array as $con)
    {
        $con->send($data);
    }
}
  • 暫無評論
年代過于久遠(yuǎn),無法發(fā)表回答
??