PHP 实现页面推送 & APP与浏览器页面实时交互

来源:互联网 发布:java学生选课系统源码 编辑:程序博客网 时间:2024/04/29 22:55

   今天因我的同桌想做一个公司内部的管理后台,但是想实现一个效果:管理后台打开一个页面,页面上有一个二维码,二维码方便有一个绿色的按钮,当客户端扫描二维码之后,管理后台的按钮由绿色变为红色。

方案一、js

             最简单的办法就是,APP请求服务器,服务器去改变对应数据里的状态字段,页面里套用一个js 的ajax方法实时请求这个字段的值,但是这样对于一个页面的这个做法感觉有点因小失大了,如果页面有好多数据量的话,页面会很慢,还会很卡。随意被pass了。

         



方案二、webSocket

              按照 web实现推送消息的机制,服务器作为socket服务,客户端扫完二维码之后向服务器推送消息,服务器再向对应UID的页面推送消息

             

            

代码:

    1、去网站下载对应的程序包,放到服务器开socket服务     http://www.workerman.net/web-sender,按照上面说的取搭建就好了

    2、分为  接收接口、发送两个接口

         接收接口:负责连接socket服务器,取消息

        发送接口:负责连接socket服务器,发送消息

接收:

<!DOCTYPE html><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"><link href="main.css" rel="stylesheet" type="text/css" /><script src='//cdn.bootcss.com/socket.io/1.3.7/socket.io.js'></script><script src='//cdn.bootcss.com/jquery/1.11.3/jquery.js'></script><script src='/notify.js'></script></head><body><script>$(document).ready(function () {    // 连接服务端    var socket = io('http://localhost:2120');    // 连接后登录    socket.on('connect', function(){    socket.emit('login', 596272866);    });    // 后端推送来消息时    socket.on('new_msg', function(msg){         $('#content').html('收到消息:'+msg);         $('.notification.sticky').notify();   alert(msg);    });    // 后端推送来在线数据时    socket.on('update_online_count', function(online_stat){        $('#online_box').html(online_stat);    });});</script></body></html>
发送:

<?php// 指明给谁推送,为空表示向所有在线用户推送$to_uid = "596272866";// 推送的url地址,上线时改成自己的服务器地址$push_api_url = "http://localhost:2121";$post_data = array(   "type" => "publish",   "content" => $_REQUEST['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 );curl_setopt ($ch, CURLOPT_HTTPHEADER, array("Expect:"));$return = curl_exec ( $ch );curl_close ( $ch );var_export($return);






0 0