ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
https://www.cnblogs.com/qichao123/p/11066229.html # [PHP实现消息推送](https://www.cnblogs.com/qichao123/p/11066229.html) 我们做web的时候偶尔会遇到消息推送,如图示例(红框位置) ![](https://img2018.cnblogs.com/blog/649207/201906/649207-20190621182009078-22730770.png) **当我们遇到这种功能要如何开发呢?下边将我了解的两种方法整理一下:** **一、ajax轮询,定时去请求服务器数据** 通过观察thinkphp官网貌似也是用的这个方法,下边将这种方法整理一下: [![复制代码](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码") ~~~ Notify.php ~~~ ~~~ //获取通知消息 public function getNotifyCount() { $msg = db('message_logs')->where('isscan',0)->count(); RestfulTools::restData($msg); //这里是封装好的json_encode方法 } ~~~ [![复制代码](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码") [![复制代码](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码") ~~~ 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> ~~~ [![复制代码](https://common.cnblogs.com/images/copycode.gif)](javascript:void(0); "复制代码") **二.websocket实时消息推送** **这里还没测试,测试完即将完善**