iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > PHP编程 >怎么在PHP中实现一个长轮询消息实时推送功能
  • 680
分享到

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

2023-06-06 14:06:41 680人浏览 泡泡鱼
摘要

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

今天就跟大家聊聊有关怎么在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$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$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中实现一个长轮询消息实时推送功能有进一步的了解吗?如果还想了解更多知识或者相关内容,请关注编程网PHP编程频道,感谢大家的支持。

--结束END--

本文标题: 怎么在PHP中实现一个长轮询消息实时推送功能

本文链接: https://www.lsjlt.com/news/247352.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作