• php 消息实时推送(反ajax推送)


    入口文件index.html

    <!DOCTYPE HTML>
    <html>
    <head>
        <title>反ajax推送</title>
        <style>
            .send{color:#555;text-align: left;}
            .require{color:blue;text-align: right;}
            .content_box{text-align: center;margin: 20px;
                        border: 1px solid #ddd;padding: 20px;}
        </style>
        <script src="http://code.jQuery.com/jquery-1.11.2.min.js"></script>
    </head>
    <body>
        <div class="content_box" id="content_box_title" style="border: none;">消息框</div>
        <div class="content_box" id="content_box">
        </div>
        <div style=" 450px;margin: 0 auto;">
            <select id="username" style="font-size: 20px;">
                <option value="1" selected="selected">1</option>
                <option value="2">2</option>
            </select>
            <input type="text" style="font-size: 20px;" value="" id="send_text">
            <button id="btn_send" style="font-size: 20px;">发送</button>
            <button id="btn_link" style="font-size: 20px">连接</button>
        </div>
        <div class="error_tip" id="error_tip" style="color: red;">
        </div>
        <script>
            $(function(){
                //发送消息
                $('#btn_send').click(function(){
                    var send_text = $('#send_text').val();
                    if(send_text.length <= 0){
                        $('#error_tip').html('不能输入空值');
                    }else{
                        send(send_text);
                    }
                });
                //按回车键发送消息
                $('#send_text').on('keyup',function(e){
                    if(e.keyCode == 13){
                        $('#btn_send').trigger('click');
                    }
                });
                //建立通讯链接
                $('#btn_link').click(function(){
                    connect();
                    var _this = $(this);
                    _this.attr('disabled',true);
                    _this.html('已连接');
                });
    
    
            });
            //建立通讯连接函数
            function connect(){
                $('#content_box_title').html($('#username').val()+'的消息窗口');
                $.ajax({
                    data:{'user':$('#username').val()},
                    url:'ajaxPush.PHP',
                    type:'get',
                    timeout:0,
                    dataType:'json',
                    success:function(data){
                        $('#content_box').append('<div class="require">'+data.msg+'</div>');
                        connect();
                    }
                });
            }
            //发送消息函数
            function send(massege){
                var user =$('#username').val();
                $.getJSON('write.php',{'msg':massege,'user':user},function(data){
                    if(data.sf){
                        $('#content_box').append('<div class="send">'+massege+'</div>');
                        $('#send_text').val('');
                    }else{
                        $('#error_tip').html('输入保存错误!');
                    }
                });
            }
        </script>
    </body>
    </html>




    ajax处理输入 write.php


    <?php
    /**
     * Created by TXM.
     * Time: 2015/4/18 13:13
     * function:
     */
    
    
    $filename  = dirname(__FILE__).'/data.txt';
    $isread_file = dirname(__FILE__).'/isread.txt';
    $user = dirname(__FILE__).'/user.txt';
    
    
    //写入消息,消息未读,谁发送的消息
    file_put_contents($filename,$_GET['msg']);
    file_put_contents($isread_file,'0');
    file_put_contents($user,$_GET['user']);
    
    
    echo json_encode(array('sf'=>true));
    
    
    
    




    长轮询推送 ajaxPush.php


    <?php
    /**
     * Created by TXM.
     * Time: 2015/4/18 13:12
     * function:
     */
    $filename  = dirname(__FILE__).'/data.txt';
    $isread_file = dirname(__FILE__).'/isread.txt';
    $userfile = dirname(__FILE__).'/user.txt';
    $get_user = $_GET['user'] == '1'?'2':'1';
    $msg='';
    
    
    while(1){
        $msg = file_get_contents($filename);
        $isread = file_get_contents($isread_file);
        $user = file_get_contents($userfile);
    
    
        //是对方发送的消息,设置消息已读,退出循环。
        if($isread == '0' && $get_user == $user){
            file_put_contents($isread_file,'1');
            break;
        }
        sleep(1);
    }
    
    
    echo json_encode(array('msg'=>$msg));


  • 相关阅读:
    机器学习公开课笔记第八周之推荐系统
    使用RT3070使开发板上网
    Linux及FL2440使用过程遇到的各种问题和小技巧
    学习 Git的使用过程
    Linux下Bash shell学习笔记
    MarkDown学习笔记
    STM32F407+STemwin学习笔记之STemwin移植补充Touch
    STM32F407+STemwin学习笔记之STemwin移植
    DXP常用的设置及快捷键
    第九届蓝桥杯-嵌入式比赛体会与备赛经验
  • 原文地址:https://www.cnblogs.com/hehe520/p/6147466.html
Copyright © 2020-2023  润新知