Workerman学习(以thinkphp5为例)

workerman简单实现步骤:

        将下载的Gateway版本放在vendor里面,

        再打开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里面:

2197022f2e98d8a52033c99675f24ef1aa4.jpg

console.log之后会发现

f1758487308b180269ecff204034a84a9be.jpg

Client_id是workerman系统自动生成的聊天者的id,这就代表建立最基本的通信成功

Js在判断到收到message之后,用switch判断message的type类型,达到分辨信息类型的步骤

a9a844ed62e3cca42f707305bea6719568b.jpg

ws.send()作用是将数据发送给socket服务器(在Events.php里面接收)

dd6bc9949df01b5d870ffcbbab77b63f7b8.jpg

 bindUid()是将client_id与uid绑定,以便通过Gateway::sendToUid($uid)发送数据,

通过Gateway::isUidOnline($uid)用户是否在线。uid解释:这里uid泛指用户id或者设备id,用来唯一确定一个客户端用户或者设备

e51aa1c0e7cdf0a7b0ebd124880a5163fcf.jpg

点击发送按钮处理逻辑:

Message结合内容(fromid和toid,data表示用户发送的信息,type代表发送信息的类型等信息)

bf41a8eac81e2068f9997df986acaa0133f.jpg

当返回类型是say,表示接收到了发送的type类型为say类型的信息,

sendToUid()表示:向uid绑定的所有在线client_id发送数据。

isUidOnline()表示:判断$uid是否在线,此方法需要配合Gateway::bindUid($client_uid, $uid)使用 

26e9069758caff8caa7dc275b54d57646e6.jpg

至此,一个简单的发送文字的简单通信步骤就完成了~

参考网易云课堂视频链接:https://study.163.com/course/courseMain.htm?courseId=1005015012

转载于:https://my.oschina.net/zfblog/blog/3034476

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值