ajax轮询获取php后台消息推送

在web开发中有时会用到消息提醒,一般都是使用浏览器前端轮询消息接口来获得最新消息提醒,或者使用socket的方式获取消息(这种方式带给服务器的压力小)。本文只介绍使用ajax轮询获取消息的方式。

前端页面index.html

<!DOCTYPE HTML>
<html>
<head>
  <title>ajax获取消息</title>
  <meta charset="UTF-8">
  <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>
  <div class="content_box" id="content_box">
<script type="text/javascript">

connect();
        //建立通讯连接函数
    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();
        }
      });
    }

    //Ajax定时访问服务端,这里是10000ms请求一次。
    window.setInterval(function(){
       // $.ajax(getting)
        connect();
    },10000);//180000毫秒
</script>

简易版后台消息接口ajaxPush.php

<?php
echo json_encode(array('msg'=>time().' ==服务器返回'));

直接访问index.html即可,只要网页不关闭会一直请求消息,建议轮询间隔至少保证1分钟。如果想要实时性好还是使用socket或其他第三方消息通知接口。在现实中ajaxPush.php显然是完全不可使用的,还需要增加数据存储与相关的逻辑处理,公告类型消息与单用户消息的处理一般也有所不同(尤其用户量很大且需要标记已读未读的情况)。

推荐阅读:长连接/websocket/SSE等主流服务器推送技术比较

基于互联网精神,在注明出处的前提下本站文章可自由转载!

本文链接:https://ranjuan.cn/ajax-push-message-with-php/

赞赏

微信赞赏支付宝赞赏

发表评论