穹风嘞 發表於 2019-6-21 18:32:00

PHP实现消息推送

<p>我们做web的时候偶尔会遇到消息推送,如图示例(红框位置)</p>
<p><img src="https://img2018.cnblogs.com/blog/649207/201906/649207-20190621182009078-22730770.png" alt=""></p>
<p>&nbsp;</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')-&gt;where('isscan',0)-&gt;<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>&nbsp;</p>
<div class="cnblogs_code">
<pre>notify.js</pre>
<pre>&lt;span class="am-icon-envelope-o"&gt;&lt;/span&gt; 消息 &lt;span class="am-badge am-badge-warning" <strong><span style="color: rgba(255, 102, 0, 1)">id="msgCount"</span></strong>&gt; <br>{$msgCount}//这是是通过tp的 assign方法分配过来的变量,作为初始值<br>&lt;/span&gt;</pre>
<pre><br>&lt;script type="text/javascript"&gt;

    <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>&lt;/script&gt;</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]
查看完整版本: PHP实现消息推送