1.下载框架https://www.workerman.net/download
2.整个放入vendor中
3.修改Applications/YourApp/start_gateway.php中tcp改成WebSocket加上你的域名和端口
$gateway = new Gateway("WebSocket://127.1.1.1:8282");
4.启动GatewayWorker/start_for_win.bat,需要配置php环境变量, 计算机->属性->高级系统设置->添加变量,名:PATH,值:(D:\myphp_www\PHPTutorial\php\php-5.4.45)
5.操作Applications/YourApp/Events.php,基本后期都是操作这里
6.前端随便访问一个页面加入下面的JS
<script type="text/javascript">
var ws = new WebSocket("ws://120.xx.xx.xx:8282");
ws.onmessage = function(e){
var data = eval("("+e.data+")");
console.log(data);
if(data.type == 1){ //服务端请求身份
var info = '{"type":"1","uid":"2"}';
ws.send(info);
}
}
</script>
7.系统自带的$client_id页面关闭后会回收所以不适合使用,用bindUid和sendToUid解决问题http://doc2.workerman.net/bind-uid.html
/**
* 当客户端发来消息时触发
* @param int $client_id 连接id
* @param mixed $message 具体消息
*/
public static function onMessage($client_id, $message)
{
$info = json_decode($message,true);
//客户端身份回复
if($info['type'] == 1){
Gateway::bindUid($client_id,$info['uid']); //绑定身份2为客户,1位客服端 {"type":"1","uid":"1"}
}
if($info['type'] == 2){
$infos = array('type'=>'2','msg'=>$info['msg']);
Gateway::sendToUid(1,json_encode($infos)); //客户提交数据,服务器通知客服
}
}