PHP开发客服系统之GatewayWorker篇

1 引言

上一小节,我们了解了一下开发客服系统的思路,所以本小节咱们就开门见山的来讲吧,这一小节我们会接触几个开发过程中常见的一个函数,其它没有讲到的可以看下官方文档的说明哦。 

开发文档:http://workerman.net/gatewaydoc/  

 

2 项目的目录结构

下载地址:https://www.workerman.net/download

 

下载解压后的目录如下:

.
├── Applications // 应用项目
│   └── YourApp  // 其中一个项目目录,目录名可以自定义
│       ├── Events.php                 // 处理业务逻辑
│       ├── start_gateway.php          // gateway进程启动脚本,包括端口号等设置
│       ├── start_businessworker.php   // businessWorker进程启动脚本
│       └── start_register.php         // 注册服务启动脚本
│
├── start.php // 全局启动脚本
│
└── vendor    // GatewayWorker框架和Workerman框架源码目录

 由于我们是使用websocket协议来开发客服系统的,所以我们得先把协议修改为websocket,修改如下所示:

3 启动应用 

在window开发的同学可以双击start_for_win.bat来启动应用,在Linux或Mac开发的同学可以使用命令php start.php stort来启动应用,如果没有报错的话,那说明配置没问题,接下来就可以进入开发阶段了

 

 window下正常启动后的效果

 

 4 处理业务逻辑

GatewayWorker的业务逻辑都有Events.php来处理,也就是说在开发过程中我们只需要关注该文件即可。

4.1 Events类中的回调函数

当businessWorker进程启动时触发

void Event::onWorkerStart(Worker $businessWorker);

 当客户端连接上gateway进程时触发。

void Events::onConnect(string $client_id);

当收到一个客户端请求后触发 

void Events::onMessage(string $client_id, mixed $recv_data);

客户端与Gateway的连接断开时触发。 

void Events::onClose(string $client_id);

当businessWorker进程退出时触发。 

void Event::onWorkerStop(Worker $businessWorker);

在开发客服系统的过程中,各个回调函数所处理的逻辑

 onWorkerStart:初始化数据(数据库连接)或启动定时任务(数据统计)等

 onConnect:过滤连接,比如不让还名单的访客连接到客服系统

 onMessage:处理主要的业务逻辑(访客及客服的初始化、转发聊天数据、转接访客、评价等)

 onClose:用户离线或客服离线后的处理

 onWorkerStop:不处理可留空

 4.2 Gateway类

向客户端client_id发送数据 

void Gateway::sendToClient(string $client_id, string $send_data);

将client_id与uid绑定 

void Gateway::bindUid(string $client_id, mixed $uid);

判断$uid是否在线 

int Gateway::isUidOnline(mixed $uid);

向uid绑定的所有在线client_id发送数据

void Gateway::sendToUid(mixed $uid, string $message);

将client_id加入某个组 

void Gateway::joinGroup(string $client_id, mixed $group);

将client_id从某个组中删除 

void Gateway::leaveGroup(string $client_id, mixed $group);

 向某个分组的所有在线client_id发送数据

void Gateway::sendToGroup(mixed $group, string $message [, array $exclude_client_id = null [, bool $raw = false]]);

 sendToClient:客服连接到客服系统时可以给该访客发送一些欢迎信息等

 bindUid:将访客的client_id与用户ID绑定,方便与现有的系统业务结合

 isUidOnline:判断访客是否在线,如果不在线的话可以将该信息设为未读信息

 sendToUid:根据uid给访客发送数据

 joinGroup:加入某个分组,推荐一个客服一个分组,这样客服就可以给自己服务的访客广播消息

 leaveGroup:离开某个分组,做转接功能时,可以将该访客从当前分组中删除,然后在加入转接后的分组

 sendToGroup:给当前分组广播消息

Gateway类提供的接口还有其它的,这里笔者只列出了开发客服系统中常见的几个

小结

本小节就先介绍到这里了,下一小节我们来了解一下如何通过JS连接到GatewayWorker

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值