workerman簡單實現步驟:php
將下載的Gateway版本放在vendor裏面,json
再打開start_for_win.bat以後,在Events.php文件中OnConnect()中,sendToClient()函數是 向客戶端client_id發送$send_data數據。若是client_id對應的客戶端不存在或者不在線則自動丟棄發送數據。服務器
public static function onConnect($client_id) { // 向當前client_id發送數據 // Gateway::sendToClient($client_id, "Hello $client_id\r\n"); // 向全部人發送 // Gateway::sendToAll("$client_id login\r\n"); //將消息發送給指定的聊天對象 => 當前client_id Gateway::sendToClient($client_id,json_encode([ 'type'=>'init', 'client_id'=>$client_id, ])); }
在聊天頁面的js裏面:socket
console.log以後會發現函數
Client_id是workerman系統自動生成的聊天者的id,這就表明創建最基本的通訊成功ui
Js在判斷到收到message以後,用switch判斷message的type類型,達到分辨信息類型的步驟3d
ws.send()做用是將數據發送給socket服務器(在Events.php裏面接收)code
bindUid()是將client_id與uid綁定,以便經過Gateway::sendToUid($uid)發送數據,視頻
經過Gateway::isUidOnline($uid)用戶是否在線。uid解釋:這裏uid泛指用戶id或者設備id,用來惟一肯定一個客戶端用戶或者設備htm
點擊發送按鈕處理邏輯:
Message結合內容(fromid和toid,data表示用戶發送的信息,type表明發送信息的類型等信息)
當返回類型是say,表示接收到了發送的type類型爲say類型的信息,
sendToUid()表示:向uid綁定的全部在線client_id發送數據。
isUidOnline()表示:判斷$uid是否在線,此方法須要配合Gateway::bindUid($client_uid, $uid)使用 。
至此,一個簡單的發送文字的簡單通訊步驟就完成了~
參考網易雲課堂視頻連接:https://study.163.com/course/courseMain.htm?courseId=1005015012