PHP实现长轮询消息实时推送功能代码实例讲解


Posted in PHP onFebruary 26, 2021

本文实例讲述了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" style="border: none;">消息框</div>
 <div class="content_box" id="content_box">
 </div>
 <div style="width: 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: 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实现长轮询消息实时推送功能代码实例讲解的文章就介绍到这了,更多相关PHP实现长轮询消息实时推送内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

PHP 相关文章推荐
用Socket发送电子邮件
Oct 09 PHP
综合图片计数器
Oct 09 PHP
最省空间的计数器
Oct 09 PHP
php桌面中心(一) 创建数据库
Mar 11 PHP
关于尾递归的使用详解
May 02 PHP
jQuery+php实现ajax文件即时上传的详解
Jun 17 PHP
Memcached常用命令以及使用说明详解
Jun 27 PHP
浅析PHP中的字符串编码转换(自动识别原编码)
Jul 02 PHP
php定义数组和使用示例(php数组的定义方法)
Mar 29 PHP
php模拟post提交数据的方法
Feb 12 PHP
PHP实现数组的笛卡尔积运算示例
Dec 15 PHP
PHP实现git部署的方法教程
Dec 19 PHP
php的对象传值与引用传值代码实例讲解
Feb 26 #PHP
php并发加锁问题分析与设计代码实例讲解
Feb 26 #PHP
PHP内存溢出优化代码详解
Feb 26 #PHP
php自动加载代码实例详解
Feb 26 #PHP
PHP的重载使用魔术方法代码实例详解
Feb 26 #PHP
PHP解密支付宝小程序的加密数据、手机号的示例代码
Feb 26 #PHP
php中get_object_vars()在数组的实例用法
Feb 22 #PHP
You might like
新的一年,新的期待:DC在2020年的四部动画电影
2020/01/01 欧美动漫
一周学会PHP(视频)Http下载
2006/12/12 PHP
php mssql 数据库分页SQL语句
2008/12/16 PHP
destoon出现验证码不显示时的紧急处理方法
2014/08/22 PHP
php跨站攻击实例分析
2014/10/28 PHP
php htmlentities()函数的定义和用法
2016/05/13 PHP
cookie在javascript中的使用技巧以及隐私在服务器端的设置
2012/12/03 Javascript
input 输入框获得/失去焦点时隐藏/显示文字(jquery版)
2013/04/02 Javascript
jQuery实现类似淘宝购物车全选状态示例
2013/06/26 Javascript
javascript间隔刷新的简单实例
2013/11/14 Javascript
js实现弹窗插件功能实例代码分享
2013/12/12 Javascript
js创建元素(节点)示例
2014/01/02 Javascript
详谈jQuery中的this和$(this)
2014/11/13 Javascript
在Mac OS上安装使用Node.js的项目自动化构建工具Gulp
2016/06/18 Javascript
Bootstrap实现水平排列的表单
2016/07/04 Javascript
Vue-Router实现页面正在加载特效方法示例
2017/02/12 Javascript
移动前端图片压缩上传的实例
2017/12/06 Javascript
一个基于react的图片裁剪组件示例
2018/04/18 Javascript
微信小程序methods中定义的方法互相调用的实例代码
2018/08/07 Javascript
js实现页面多个日期时间倒计时效果
2019/06/20 Javascript
微信小程序 腾讯地图显示偏差问题解决
2019/07/27 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
vue打包npm run build时候界面报错的解决
2020/08/13 Javascript
django文档学习之applications使用详解
2018/01/29 Python
Python实现的redis分布式锁功能示例
2018/05/29 Python
django celery redis使用具体实践
2019/04/08 Python
对pytorch的函数中的group参数的作用介绍
2020/02/18 Python
Python中flatten( ),matrix.A用法说明
2020/07/05 Python
详解Python中Pyyaml模块的使用
2020/10/08 Python
基于Python模拟浏览器发送http请求
2020/11/06 Python
html5在移动端的屏幕适应问题示例探讨
2014/06/15 HTML / CSS
深入解析HTML5中的Blob对象的使用
2015/09/08 HTML / CSS
Lee牛仔裤澳大利亚官网:美国著名牛仔裤品牌
2017/09/02 全球购物
机械设计专业应届生求职信
2013/11/21 职场文书
2014年酒店工作总结与计划
2014/11/17 职场文书
css清除浮动clearfix:after的用法详解(附完整代码)
2023/05/21 HTML / CSS