当前位置:首页 > PHP教程 > php应用 > 列表

PHP实现的消息实时推送功能【基于反ajax推送】

发布:smiling 来源: PHP粉丝网  添加日期:2021-09-05 16:24:53 浏览: 评论:0 

这篇文章主要介绍了PHP实现的消息实时推送功能,结合实例形式分析了php基于反ajax推送实现的消息实时推送前台ajax提交、后台数据处理等相关操作技巧,需要的朋友可以参考下。

本文实例讲述了PHP实现的消息实时推送功能,分享给大家供大家参考,具体如下:

入口文件index.html

  1. <!DOCTYPE HTML> 
  2. <html> 
  3. <head> 
  4.   <title>反ajax推送</title> 
  5.   <style> 
  6.     .send{color:#555;text-align: left;} 
  7.     .require{color:blue;text-align: right;} 
  8.     .content_box{text-align: center;margin: 20px; 
  9.           border: 1px solid #ddd;padding: 20px;} 
  10.   </style> 
  11.   <script src="http://code.jQuery.com/jquery-1.11.2.min.js"></script> 
  12. </head> 
  13. <body> 
  14.   <div class="content_box" id="content_box_title" style="border: none;">消息框</div> 
  15.   <div class="content_box" id="content_box"> 
  16.   </div> 
  17.   <div style="width: 450px;margin: 0 auto;"> 
  18.     <select id="username" style="font-size: 20px;"> 
  19.       <option value="1" selected="selected">1</option> 
  20.       <option value="2">2</option> 
  21.     </select> 
  22.     <input type="text" style="font-size: 20px;" value="" id="send_text"> 
  23.     <button id="btn_send" style="font-size: 20px;">发送</button> 
  24.     <button id="btn_link" style="font-size: 20px">连接</button> 
  25.   </div> 
  26.   <div class="error_tip" id="error_tip" style="color: red;"> 
  27.   </div> 
  28.   <script> 
  29.     $(function(){ 
  30.       //发送消息 
  31.       $('#btn_send').click(function(){ 
  32.         var send_text = $('#send_text').val(); 
  33.         if(send_text.length <= 0){ 
  34.           $('#error_tip').html('不能输入空值'); 
  35.         }else{ 
  36.           send(send_text); 
  37.         } 
  38.       }); 
  39.       //按回车键发送消息 
  40.       $('#send_text').on('keyup',function(e){ 
  41.         if(e.keyCode == 13){ 
  42.           $('#btn_send').trigger('click'); 
  43.         } 
  44.       }); 
  45.       //建立通讯链接 
  46.       $('#btn_link').click(function(){ 
  47.         connect(); 
  48.         var _this = $(this); 
  49.         _this.attr('disabled',true); 
  50.         _this.html('已连接'); 
  51.       }); 
  52.     }); 
  53.     //建立通讯连接函数 
  54.     function connect(){ 
  55.       $('#content_box_title').html($('#username').val()+'的消息窗口'); 
  56.       $.ajax({ 
  57.         data:{'user':$('#username').val()}, 
  58.         url:'ajaxPush.PHP', 
  59.         type:'get', 
  60.         timeout:0, 
  61.         dataType:'json', 
  62.         success:function(data){ 
  63.           $('#content_box').append('<div class="require">'+data.msg+'</div>'); 
  64.           connect(); 
  65.         } 
  66.       }); 
  67.     } 
  68.     //发送消息函数 
  69.     function send(massege){ 
  70.       var user =$('#username').val(); 
  71.       $.getJSON('write.php',{'msg':massege,'user':user},function(data){ 
  72.         if(data.sf){ 
  73.           $('#content_box').append('<div class="send">'+massege+'</div>'); 
  74.           $('#send_text').val(''); 
  75.         }else{ 
  76.           $('#error_tip').html('输入保存错误!'); 
  77.         } 
  78.       }); 
  79.     } 
  80.   </script> 
  81. </body> 
  82. </html> 

ajax处理输入 write.php

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

长轮询推送 ajaxPush.php

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

Tags: PHP消息推送 ajax推送

分享到: