温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

怎么在PHP中实现一个长轮询消息实时推送功能

发布时间:2021-03-01 17:27:24 来源:亿速云 阅读:242 作者:Leah 栏目:开发技术

今天就跟大家聊聊有关怎么在PHP中实现一个长轮询消息实时推送功能,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。

入口文件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" >消息框</div>  <div class="content_box" id="content_box">  </div>  <div >   <select id="username" >    <option value="1" selected="selected">1</option>    <option value="2">2</option>   </select>   <input type="text"  value="" id="send_text">   <button id="btn_send" >发送</button>   <button id="btn_link" >连接</button>  </div>  <div class="error_tip" id="error_tip" >  </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: 2017/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: 2017/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));

看完上述内容,你们对怎么在PHP中实现一个长轮询消息实时推送功能有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注亿速云行业资讯频道,感谢大家的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

php
AI