php 实时消息通知推送 tp5 websocket web-msg-sender

1.本次应用场景

当用户在前端提交有新的订单时
后台管理页面实时接收订单消息并进行通知

2.处理 引用 webmsgsender

基于 web-msg-sender 进行实时消息的推送
web-msg-sender 是基于 PHPSocket.io 开发的,而 PHPSocket.io 是基于 workerman 开发的。

多浏览器支持
支持针对单个用户推送消息
支持向所有用户推送消息
长连接推送(websocket或者comet),消息即时到达
支持在线用户数实时统计展示
支持在线页面数实时统计展示
支持跨域推送

3.资源下载

	[web_sender](https://www.workerman.net/web-sender)

4.代码

   将下载的web-msg-sender 放入 vendor下面
   启动:linux系统cd到到框架目录里运行php start.php start -d。
        windows系统进入到框架目录里双击start_for_win.bat文件启动。
  //发送socket消息
    public function socket($user_id){
        // 指明给谁推送,为空表示向所有在线用户推送
        $to_uid = $user_id;
       
        //获取http协议
  		 $http_type = ((isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') || (isset($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')) ? 'https://' : 'http://';
  		 
		 // 推送的url地址,上线时改成自己的服务器地址
        $push_api_url =$this->getHttpType().$_SERVER['SERVER_ADDR'].":2121/";
        $post_data = array(
            'type' => 'publish',
            'content' => '有新的订单',
            '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 );
        $return = curl_exec ( $ch );
        curl_close ( $ch );
        //var_export($return);

    }
<!--<script src='http://cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script>-->
<script type="text/javascript">

    // 连接服务端,workerman.net:2120换成实际部署web-msg-sender服务的域名或者ip
    var socket = io("这是ip"+':2120');
    // uid可以是自己网站的用户id,以便针对uid推送以及统计在线人数
    uid = '$user_id'; //后端指定的user_id
    // socket连接后以uid登录
    socket.on('connect', function(){
        socket.emit('login', uid);
    });
    // 后端推送来消息时
    socket.on('new_msg', function(msg){
        console.log(msg);
        //浏览器通知
        if (window.Notification) {
            if(window.Notification && Notification.permission !== "denied") {
                Notification.requestPermission(function(status) {
                    var n = new Notification('通知', { body: '有新的申请!' });
                });
            }
        }
    });
    // 后端推送来在线数据时
    socket.on('update_online_count', function(online_stat){
        console.log(online_stat);
    });
</script>
  • 1
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值