Workerman学习(以thinkphp5为例)

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

相关文章
相关标签/搜索