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