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

workerman教程4(新手必看)

a6965921

workerman教程4(新手必看)

今天就來講講聊天室框架的event類

先看這個(gè)函數(shù)
public static function onMessage($client_id, $message)

$client_id這個(gè)是服務(wù)器和客戶端的鏈接字 任何收發(fā)數(shù)據(jù)都要靠他
不同的客戶端 和服務(wù)端連接 會(huì)有不用的鏈接字

$message這個(gè)是服務(wù)端收到的數(shù)據(jù)

// 如果是websocket握手
if(self::checkHandshake($message))
{
// debug
echo "client:{$_SERVER}:{$_SERVER} gateway:{$_SERVER}:{$_SERVER} client_id:$client_id onMessage:".$message."\n";
return;
}

   先握手 這個(gè)是websocket協(xié)議最基礎(chǔ)的東西 連接前先握手

   所謂握手我簡單的說下 就是客戶端發(fā)送數(shù)據(jù)給服務(wù)端 服務(wù)端收到的數(shù)據(jù)發(fā)給客戶端 然后就握手了 一旦握手就代表連接了
   如果握手失敗就 不會(huì)連接

    // 解碼websocket,得到原始數(shù)據(jù)
    $message =WebSocket::decode($message);

    收到的數(shù)據(jù)要解碼哦

     $message_data = json_decode($message, true);//解析客戶端發(fā)過來的數(shù)據(jù)

     //將客戶端發(fā)過來的房間id放到 變量$room_id
      $room_id = $message_data;

      //從客戶端發(fā)過來的昵稱放到$client_name

$client_name = htmlspecialchars($message_data);

 // 存儲(chǔ)到當(dāng)前房間的客戶端列表
            $all_clients = self::addClientToRoom($room_id, $client_id, $client_name);

            這個(gè)就是客戶端發(fā)過來的房間ID 用戶昵稱等都存在memcache 我在workerman教程3 說明了 怎么查看里面的數(shù)據(jù)

               // 整理客戶端列表以便顯示 其實(shí)也就是原來的一位數(shù)組變成二維數(shù)組 提高可讀性
            $client_list = self::formatClientsData($all_clients);

      $new_message = array('type'=>$message_data, 'client_id'=>$client_id, 'client_name'=>htmlspecialchars($client_name), 'client_list'=>$client_list, 'time'=>date('Y-m-d H:i:s'));
            $client_id_array = array_keys($all_clients);
            Gateway::sendToAll(WebSocket::encode(json_encode($new_message)), $client_id_array);

Gateway::sendToAll第二個(gè)參數(shù)就是寫的不同客戶端與服務(wù)端的鏈接字的數(shù)組 只發(fā)送給這些客戶端哦~

下面說下私聊
// 私聊
Gateway::sendToClient($message_data, WebSocket::encode(json_encode($new_message)));

  這個(gè)是發(fā)給1個(gè)客戶端的方法 (比方說你發(fā)給11客戶端)
  $message_data 這個(gè)寫客戶端與服務(wù)端連接字

  //發(fā)給當(dāng)前客戶端      (發(fā)給自己)
  Gateway::sendToCurrentClient(WebSocket::encode(json_encode($new_message)));

寫完了 其他也沒什么好說的 還是那句話 有問題直接留言

7484 1 0
1個(gè)回答

walkor 打賞

解釋的很好

  • 暫無評(píng)論
年代過于久遠(yuǎn),無法發(fā)表回答
??