PHP开发客服系统之WebSocket

引言

前面的章节我们大致了解了一下开发客服的系统的思路和GatewayWorker,这一小节我们来看一下如何通过WebSocket连接到GatewayWorker。

WebSocket

WebSocket的监听事件  

Socket.onopen 连接建立时触发
Socket.onmessage 客户端接收服务端数据时触发
Socket.onerror 通信发生错误时触发
Socket.onclose 连接关闭时触发

WebSocket的方法

Socket.send()

使用连接发送数据

Socket.close()

关闭连接

连接GatewayWorker

查看WebSocket的端口

PHP开发客服系统之WebSocket_第1张图片

 知道了Gateway的端口,那现在我们就可以使用WebSocket来连接了



	
		
		WebSocket
	
	
		
	

处理业务逻辑

在客服系统中,访客和客服即可以发送数据也可以接收数据,另外客服还可以将访客转接给其它客服或发起服务评分功能等,对于这些功能我们在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来处理不同的业务逻辑。

 

你可能感兴趣的:(GatewayWorker,客服系统,PHP)