workerman+thinkphp制作簡易聊天室

下面由workerman教程欄目給大家介紹制作簡易聊天室的方法,希望對需要的朋友有所幫助!

workerman+thinkphp制作簡易聊天室

1:環境在window下面的,thinkphp3.2

2:下載GatewayWork,放到

workerman+thinkphp制作簡易聊天室

目錄下

立即學習PHP免費學習筆記(深入)”;

3:然后雙擊打開

workerman+thinkphp制作簡易聊天室

這個文件開啟服務

4:所有的邏輯均在

workerman+thinkphp制作簡易聊天室

Events.php這個文件里面

5:當用戶連接到服務器時,觸發

workerman+thinkphp制作簡易聊天室

,初始化,發送client_id

6:收到消息時,

workerman+thinkphp制作簡易聊天室

出發了這個方法,message,就是客戶端發送過來的數據

7:附上代碼

/** ?*?當客戶端發來消息時觸發 ?*?@param?int?$client_id?連接id ?*?@param?mixed?$message?具體消息 ?*/ public?static?function?onMessage($client_id,?$message) { ?????//1:收到消息之后轉成array() ?????$data?=?json_decode($message,true); ?????if(!$data){ ???????return; ?????} ?????//2:判斷類型,bind是client_id與用戶id綁定? ?????//say?發送消息的事件 ?????switch?($data['type'])?{ ???????//綁定 ???????case?'bind': ???????????$from_id?=?$data['from_id']; ???????????//把獲取的到用戶id與client_id進行綁定 ???????????Gateway::bindUid($client_id,$from_id); ???????????return; ???????//發送文字消息 ???????case?'say': ???????????//獲取到客戶端傳過來的信息 ???????????$text?=?$data['data']; ???????????$from_id?=?$data['from_id']; ???????????$to_id?=?$data['to_id']; ???????????//封裝消息 ???????????$info?=?array( ?????????????'type'=>'text', ?????????????'data'=>$text, ?????????????'from_id'=>$from_id, ?????????????'to_id'=>$to_id, ?????????????'time'=>date('Y-m-d?h:i:s',time())? ???????????); ???????????Gateway::sendToUid($to_id,json_encode($info)); ???????????return; ???????//發送圖片 ???????case?'img': ???????????$from_id?=?$data['from_id']; ???????????$to_id?=?$data['to_id']; ???????????$img?=?$data['img']; ???????????//封裝消息 ???????????$info?=?array( ?????????????'type'=>'img', ?????????????'data'=>$img, ?????????????'from_id'=>$from_id, ?????????????'to_id'=>$to_id, ?????????????'time'=>date('Y-m-d?h:i:s',time())? ???????????); ???????????Gateway::sendToUid($to_id,json_encode($info)); ???????????return; ?????} ?????//推送給指定的uid ?????//?向所有人發送? ?????//?Gateway::sendToAll(json_encode($info)); }

可以簡單的實現點對點的消息互通。

以上就是

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享