PHP实现消息推送
<p>我们做web的时候偶尔会遇到消息推送,如图示例(红框位置)</p><p><img src="https://img2018.cnblogs.com/blog/649207/201906/649207-20190621182009078-22730770.png" alt=""></p>
<p> </p>
<p><span style="font-size: 14px"><strong>当我们遇到这种功能要如何开发呢?下边将我了解的两种方法整理一下:</strong></span></p>
<p><span style="font-size: 18pt"><strong>一、ajax轮询,定时去请求服务器数据</strong></span></p>
<p>通过观察thinkphp官网貌似也是用的这个方法,下边将这种方法整理一下:</p>
<div class="cnblogs_code">
<pre>Notify.php</pre>
<pre><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">获取通知消息</span>
<span style="color: rgba(0, 0, 255, 1)">public</span> <span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)"> getNotifyCount()
{
</span><span style="color: rgba(128, 0, 128, 1)">$msg</span> = db('message_logs')->where('isscan',0)-><span style="color: rgba(0, 128, 128, 1)">count</span><span style="color: rgba(0, 0, 0, 1)">();
RestfulTools</span>::restData(<span style="color: rgba(128, 0, 128, 1)">$msg</span>); <span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">这里是封装好的json_encode方法</span>
}</pre>
</div>
<p> </p>
<div class="cnblogs_code">
<pre>notify.js</pre>
<pre><span class="am-icon-envelope-o"></span> 消息 <span class="am-badge am-badge-warning" <strong><span style="color: rgba(255, 102, 0, 1)">id="msgCount"</span></strong>> <br>{$msgCount}//这是是通过tp的 assign方法分配过来的变量,作为初始值<br></span></pre>
<pre><br><script type="text/javascript">
<span style="color: rgba(0, 0, 255, 1)">var</span> getting =<span style="color: rgba(0, 0, 0, 1)"> {
url</span>:"{:url('Notify/getNotifyCount')}",<span style="color: rgba(0, 0, 0, 1)">
dataType</span>:'json',<span style="color: rgba(0, 0, 0, 1)">
success</span>:<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(res) {
console</span>.<span style="color: rgba(0, 128, 128, 1)">log</span><span style="color: rgba(0, 0, 0, 1)">(res);
</span><span style="color: rgba(0, 0, 255, 1)">var</span> msgCount = res.<span style="color: rgba(0, 0, 0, 1)">result;
$(</span>"#msgCount").<span style="color: rgba(0, 0, 0, 1)">html(msgCount); //用js的 html方法去改变<strong><span style="color: rgba(255, 102, 0, 1)">id为msgCount</span></strong>的值
}
};
</span><span style="color: rgba(0, 128, 0, 1)">//</span><span style="color: rgba(0, 128, 0, 1)">Ajax定时访问服务端,这里是3分钟请求一次。</span>
<span style="color: rgba(0, 0, 0, 1)">
window</span>.setInterval(<span style="color: rgba(0, 0, 255, 1)">function</span><span style="color: rgba(0, 0, 0, 1)">(){
$</span>.<span style="color: rgba(0, 0, 0, 1)">ajax(getting)
}</span>,180000<span style="color: rgba(0, 0, 0, 1)">);
</span></script></pre>
</div>
<p><span style="font-size: 18pt"><strong>二.websocket实时消息推送</strong></span></p>
<p><span style="font-size: 24px"><strong>这里还没测试,测试完即将完善</strong></span></p><br><br>
来源:https://www.cnblogs.com/qichao123/p/11066229.html
頁:
[1]