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('<li class="llt" data-ccid="' + item.id + '"><a href="{:url(" rel="external nofollow" admin/carloan/edit")}?id='+item.log_c_id+'"><span class="label label-info"><i class="icon-bullhorn"></i></span><span class="message">' + item.u_name + ':' + item.log_content + '</span><span class="time"><span class="liveTime">' + item.log_time + '</span></span></a></li>'); }); }else{ } } }; //关键在这里,Ajax定时访问服务端,不断获取数据 ,这里是1秒请求一次。 window.setInterval(function () { $.ajax(getting) }, 1000);
Verwandte Empfehlungen:
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!