我們做web的時候偶爾會遇到消息推送,如圖示例(紅框位置)
當我們遇到這種功能要如何開發呢?下邊將我了解的兩種方法整理一下:
一、ajax輪詢,定時去請求服務器數據
通過觀察thinkphp官網貌似也是用的這個方法,下邊將這種方法整理一下:
Notify.php
//獲取通知消息 public function getNotifyCount() { $msg = db('message_logs')->where('isscan',0)->count(); RestfulTools::restData($msg); //這里是封裝好的json_encode方法 }
notify.js
<span class="am-icon-envelope-o"></span> 消息 <span class="am-badge am-badge-warning" id="msgCount">
{$msgCount} //這是是通過tp的 assign方法分配過來的變量,作為初始值
</span>
<script type="text/javascript"> var getting = { url:"{:url('Notify/getNotifyCount')}", dataType:'json', success:function(res) { console.log(res); var msgCount = res.result; $("#msgCount").html(msgCount); //用js的 html方法去改變id為msgCount的值 } }; //Ajax定時訪問服務端,這里是3分鍾請求一次。 window.setInterval(function(){ $.ajax(getting) },180000); </script>
二.websocket實時消息推送
這里還沒測試,測試完即將完善