Heim  >  Artikel  >  Backend-Entwicklung  >  Thinkphp kombiniert AJAX-Long-Polling, um PC- und APP-Push zu implementieren

Thinkphp kombiniert AJAX-Long-Polling, um PC- und APP-Push zu implementieren

不言
不言Original
2018-05-08 11:23:342151Durchsuche

Dieser Artikel stellt hauptsächlich Thinkphp in Kombination mit AJAX Long Polling vor, um PC- und APP-Push zu realisieren. Jetzt kann ich ihn mit allen teilen, die ihn benötigen

Vorwort

Dieser Artikel stellt Ihnen hauptsächlich die relevanten Inhalte zu Thinkphp in Kombination mit AJAX Long Polling vor, um PC- und APP-Push zu realisieren Kurz gesagt, werfen wir einen Blick auf die ausführliche Einführung.

Implementieren Sie die Logik

Nach einem bestimmten Vorgang (z. B. dem Erstellen einer neuen Ankündigung) den gleichzeitigen Push von Nachrichten an alle Benutzer oder bestimmte Benutzer der APP auslösen oder mobiles WEB.

Unabhängig von der Leistung gibt es immer noch Leute, die es verwenden werden. Die Implementierung ist wie folgt (basierend auf Thinkphp5 Message Push):

PHP Long Polling

/*
  * long轮询 API查询接口
  */
 public function id_log()
 {
  if (request()->isPost()) {
   $id = $this->param['id'];
 
   set_time_limit(0);
   $id_log = Db::name('table')->alias('c')
    ->join('table cc', 'c.youname=cc.youname', 'left')
    ->join('table a', 'cc.youname =a.youname ', 'left')
    ->join('table u', 'c.youname =u.youname ', 'left')
    ->field('')
    ->where('', $id)
    ->order('log_time desc')
    ->limit(1)
    ->select();
 
   while (true) {
    if ($id_log) {
     $id_log_set = Db::name('table2')
      ->where('', $id)
      ->limit(1)
      ->setField('log_flag', '1');
     $this->response($id_log);
    }
    $this->wrong(404100);
    usleep(2000);
   }
 
  };
 }

Ersetzen Sie es durch Ihre eigene Tabelle und verwandte Felder.

Push-Nachrichtenerstellungsmethode

/**
 * 创建消息日志 触发操作方法
 * @param string $log_content 日志内容
 * @param string $log_type 日志类型
 * @param int $log_c_id A用户ID
 * @param string $log_user B用户ID
 * @param string $log_admin PC
 * @param string $log_status
 * @return array
 */
function createLog($log_c_id, $log_type, $log_content, $log_admin, $log_user,$log_status)
{
 $data = [
  'log_c_id' => $log_c_id,
  'log_ip' => get_client_ip(),
  'log_admin' => $log_admin,
  'log_time' => date("Y-m-d H:i:s", time()),
  'log_url' => get_url(),
  'log_type' => $log_type,
  'log_content' => $log_content,
  'log_user' => $log_user,
  'log_status'=>$log_status
 ];
 $logadd = \think\Db::name('table')->insertGetId($data);
 return $logadd;
}

Dateninventarnachricht übernehmen und Flagge erkennen und entwerfen Pushen Sie das Formular, sonst werden Offline-Nachrichten nicht gepusht. Ebenso müssen Sie es in Ihre eigene Datenstruktur ändern!

AJAX Long Polling

 var getting = {
  url: '{:url("youapi/url")}',
  dataType: 'json',
  success: function (res) {
   $(".count").text($('.llt').children().size());
   $(".llt").remove();
   if(res.length!=null){
    $.each(res, function (index, item) {
     $(".notification").append(&#39;<li class="llt" data-ccid="&#39; + item.id + &#39;"><a href="{:url(" rel="external nofollow" admin/carloan/edit")}?id=&#39;+item.log_c_id+&#39;"><span class="label label-info"><i class="icon-bullhorn"></i></span><span class="message">&#39; + item.u_name + &#39;:&#39; + item.log_content + &#39;</span><span class="time"><span class="liveTime">&#39; + item.log_time + &#39;</span></span></a></li>&#39;);
    });
   }else{
   }
  }
 };
 //关键在这里,Ajax定时访问服务端,不断获取数据 ,这里是1秒请求一次。
 window.setInterval(function () {
  $.ajax(getting)
 }, 1000);

Verwandte Empfehlungen:

Detaillierte Erklärung von Thinkphp Kombination ajaxFileUpload implementiert Beispielcode für die asynchrone Bildübertragung

ThinkPHP kombiniert Ajax und MySQL, um Client-Kommunikationsfunktionscode zu implementieren Beispiel_PHP-Tutorial

Das obige ist der detaillierte Inhalt vonThinkphp kombiniert AJAX-Long-Polling, um PC- und APP-Push zu implementieren. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn