Home  >  Article  >  Backend Development  >  Real-time message push function implemented in PHP based on anti-ajax push

Real-time message push function implemented in PHP based on anti-ajax push

不言
不言Original
2018-06-07 10:15:492246browse

This article mainly introduces the real-time message push function implemented by PHP, and analyzes the real-time message push implemented by PHP based on anti-ajax push in the form of examples, front-end ajax submission, background data processing and other related operating techniques. Friends in need can refer to the following

The example in this article describes the real-time message push function implemented by PHP. Share it with everyone for your reference, the details are as follows:

Entry file 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>
  <p class="content_box" id="content_box_title" style="border: none;">消息框</p>
  <p class="content_box" id="content_box">
  </p>
  <p 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>
  </p>
  <p class="error_tip" id="error_tip" style="color: red;">
  </p>
  <script>
    $(function(){
      //发送消息
      $(&#39;#btn_send&#39;).click(function(){
        var send_text = $(&#39;#send_text&#39;).val();
        if(send_text.length <= 0){
          $(&#39;#error_tip&#39;).html(&#39;不能输入空值&#39;);
        }else{
          send(send_text);
        }
      });
      //按回车键发送消息
      $(&#39;#send_text&#39;).on(&#39;keyup&#39;,function(e){
        if(e.keyCode == 13){
          $(&#39;#btn_send&#39;).trigger(&#39;click&#39;);
        }
      });
      //建立通讯链接
      $(&#39;#btn_link&#39;).click(function(){
        connect();
        var _this = $(this);
        _this.attr(&#39;disabled&#39;,true);
        _this.html(&#39;已连接&#39;);
      });
    });
    //建立通讯连接函数
    function connect(){
      $(&#39;#content_box_title&#39;).html($(&#39;#username&#39;).val()+&#39;的消息窗口&#39;);
      $.ajax({
        data:{&#39;user&#39;:$(&#39;#username&#39;).val()},
        url:&#39;ajaxPush.PHP&#39;,
        type:&#39;get&#39;,
        timeout:0,
        dataType:&#39;json&#39;,
        success:function(data){
          $(&#39;#content_box&#39;).append(&#39;<p class="require">&#39;+data.msg+&#39;</p>&#39;);
          connect();
        }
      });
    }
    //发送消息函数
    function send(massege){
      var user =$(&#39;#username&#39;).val();
      $.getJSON(&#39;write.php&#39;,{&#39;msg&#39;:massege,&#39;user&#39;:user},function(data){
        if(data.sf){
          $(&#39;#content_box&#39;).append(&#39;<p class="send">&#39;+massege+&#39;</p>&#39;);
          $(&#39;#send_text&#39;).val(&#39;&#39;);
        }else{
          $(&#39;#error_tip&#39;).html(&#39;输入保存错误!&#39;);
        }
      });
    }
  </script>
</body>
</html>

ajax processing input write.php

<?php
/**
 * Created by TXM.
 * Time: 2015/4/18 13:13
 * function:
 */
$filename = dirname(__FILE__).&#39;/data.txt&#39;;
$isread_file = dirname(__FILE__).&#39;/isread.txt&#39;;
$user = dirname(__FILE__).&#39;/user.txt&#39;;
//写入消息,消息未读,谁发送的消息
file_put_contents($filename,$_GET[&#39;msg&#39;]);
file_put_contents($isread_file,&#39;0&#39;);
file_put_contents($user,$_GET[&#39;user&#39;]);
echo json_encode(array(&#39;sf&#39;=>true));

Long polling push ajaxPush.php

<?php
/**
 * Created by TXM.
 * Time: 2015/4/18 13:12
 * function:
 */
$filename = dirname(__FILE__).&#39;/data.txt&#39;;
$isread_file = dirname(__FILE__).&#39;/isread.txt&#39;;
$userfile = dirname(__FILE__).&#39;/user.txt&#39;;
$get_user = $_GET[&#39;user&#39;] == &#39;1&#39;?&#39;2&#39;:&#39;1&#39;;
$msg=&#39;&#39;;
while(1){
  $msg = file_get_contents($filename);
  $isread = file_get_contents($isread_file);
  $user = file_get_contents($userfile);
  //是对方发送的消息,设置消息已读,退出循环。
  if($isread == &#39;0&#39; && $get_user == $user){
    file_put_contents($isread_file,&#39;1&#39;);
    break;
  }
  sleep(1);
}
echo json_encode(array(&#39;msg&#39;=>$msg));

Related recommendations:

How to use PHP to access the RabbitMQ message queue

The above is the detailed content of Real-time message push function implemented in PHP based on anti-ajax push. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn