Maison  >  Article  >  développement back-end  >  Fonction push de messages en temps réel implémentée en PHP basée sur le push anti-ajax

Fonction push de messages en temps réel implémentée en PHP basée sur le push anti-ajax

不言
不言original
2018-06-07 10:15:492233parcourir

Cet article présente principalement la fonction push de message en temps réel implémentée par PHP et analyse la fonction push de message en temps réel implémentée par PHP sur la base du push anti-ajax sous forme d'exemples, de soumission ajax frontale, de traitement des données en arrière-plan. et d'autres techniques d'exploitation connexes. Les amis dans le besoin peuvent se référer à ce qui suit

L'exemple dans cet article décrit la fonction push de messages en temps réel implémentée par PHP. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Fichier d'entrée 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>

traitement ajax entrée 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));

Recommandations associées :

Comment utiliser PHP pour accéder à la file d'attente de messages RabbitMQ

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn