PHP开发客服系统之WebSocket
程序员文章站
2022-05-19 20:56:36
...
引言
前面的章节我们大致了解了一下开发客服的系统的思路和GatewayWorker,这一小节我们来看一下如何通过WebSocket连接到GatewayWorker。
WebSocket
WebSocket的监听事件
open | Socket.onopen | 连接建立时触发 |
message | Socket.onmessage | 客户端接收服务端数据时触发 |
error | Socket.onerror | 通信发生错误时触发 |
close | Socket.onclose | 连接关闭时触发 |
WebSocket的方法
Socket.send() |
使用连接发送数据 |
Socket.close() |
关闭连接 |
连接GatewayWorker
查看WebSocket的端口
知道了Gateway的端口,那现在我们就可以使用WebSocket来连接了
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>WebSocket</title>
</head>
<body>
<script type="text/javascript">
// 初始化WebSocket
let socket = new WebSocket('ws://127.0.0.1:8282');
// 监听连接事件
socket.onopen = function(res) {
// 自定义发送数据格式
let msg = {
type: 'init'
id: '',
name: ''
};
// 发送数据
socket.send(JSON.stringify(msg));
};
// 监听消息
socket.onmessage = function(res) {
console.log(res);
};
// 监听关闭事件
socket.onclose = function(res) {
console.log(res);
};
// 监听失败事件
socket.onerror = function(err) {
console.log(err);
}
</script>
</body>
</html>
处理业务逻辑
在客服系统中,访客和客服即可以发送数据也可以接收数据,另外客服还可以将访客转接给其它客服或发起服务评分功能等,对于这些功能我们在WebSocket里要如何处理呢。上文我们了解到WebSocket有一个监听服务端数据时触发的事件(onmessage),没错,我们就是在此处理服务端发来的数据。
假如我们服务端自定义的数据格式如下
{
type:'chat', // 业务类型(根据需求更改)
data:'hello' // 需要处理的数据
}
onmessage处理
// 监听消息
socket.onmessage = function(res) {
// 将字符串解析成JSON格式
res = JSON.parse(res);
// 根据swith语句来处理不同的type事件
switch (res.type) {
case 'init':
// type为init时需要处理的业务
break;
case 'chat':
// type为chat时需要处理的业务
break;
// ......
}
};
发送数据
上文我们了解到WebSocket有一个发送数据的方法(send),假如我们new的WebSocket对象为socket,则可以用socket.send()来发送数据,同样,服务端也要能处理WebSocket发送的业务逻辑,所以可以在发送的data里带上上业务类型type。
如下所示:
{
type:'chat', // 业务类型(根据需求更改)
data:'hi' // 需要处理的数据
}
这样我们就可以在GatewayWorker的Events.php里的onMessage方法根据type来处理不同的业务逻辑。
上一篇: python 使用gensim和pickle包,模拟智能客服系统
下一篇: 随机生成验证码