thinkphp 实现新订单语音提醒功能

1、下载workerman
https://www.workerman.net/web-sender
2、现在下来双击 start_for_win.bat 运行,出现下面界面说明成功了
thinkphp 实现新订单语音提醒功能_第1张图片
3、在TP对于的后台通知页面写

<audio id='play' src='__STATIC__/yy.wav' controls='controls'></audio>

<script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>
<script src="https://g.csdnimg.cn/??lib/jquery/1.12.4/jquery.min.js"></script>
<script>
    // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    var socket = io('http://tp.com:2120'); //http://www.tp5_test.com换成自己的域名或者ip
    // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数,这个ID可以随便写
    uid = 1557062581000;
    // socket连接后以uid登录
    socket.on('connect', function(){
        socket.emit('login', uid);
    });
    <!--// 后端推送来消息时-->
    socket.on('new_msg', function(msg){ 
        //两种处理方式 
        // 1 追加到页面元素中,可以做成页面的弹窗
        $("#msg").append(msg);   
        //2 播放提示应 :
        if(msg == 1){
            var audio = document.getElementById( "play" ); //浏览器支持 audio
            audio.play(); //播放提示音
        } 
    });
    // 后端推送来在线数据时
    socket.on('update_online_count', function(online_stat){
        console.log(online_stat);
    });
</script>

4、在前台的订单提交页面触发以下通知方案,后台就能播放语音

//这个方法我随便写了写,具体的处理就是在支付完成回调以后,用用send_workerman方法就可以了。我是用sends来模型支付完成以后的回调
		    public function sends($id)
		    {
		        // var_dump($id);die;
		        if($id == 1){
		          $this->send_workman($id);
		        }else{
		          echo '没有发送消息';
		        }
		    }		 
		    /**
		     * @route('send_workman')
		     */
		    public function send_workman($id)
		    {
		        $to_uid = '1557062581000'; //和页面的uid一致,不填写也可以
				$neirong = input('neirong');
		        // 推送的url地址,使用自己的服务器地址
		        $push_api_url = "http://tp.com:2121/";
		        $post_data = array(
		            "type" => "publish",
		            "content" => $id,
		            "to" => $to_uid,
		        );
		        $ch = curl_init ();
		        curl_setopt ( $ch, CURLOPT_URL, $push_api_url );
		        curl_setopt ( $ch, CURLOPT_POST, 1 );
		        curl_setopt ( $ch, CURLOPT_HEADER, 0 );
		        curl_setopt ( $ch, CURLOPT_RETURNTRANSFER, 1 );
		        curl_setopt ( $ch, CURLOPT_POSTFIELDS, $post_data );
		        curl_setopt ( $ch, CURLOPT_HTTPHEADER, array("Expect:"));
		        $return = curl_exec ( $ch );
		        curl_close ( $ch );
		        var_export($return);
		    }

5、最后你同时在浏览器打开通知页面和订单触发2个页面。就收到语音了

你可能感兴趣的:(php)