Laravel利用pusher推送消息的方法詳解

Laravel利用pusher推送消息的方法詳解

一.注冊pusher

1.注冊

https://pusher.com/

2.獲取key,密匙,app_id等

?

二.配置pusher

1.安裝pusher

composer?require?pusher/pusher-php-server

2.配置config/broadcasting.php

'default'?=>?env('BROADCAST_DRIVER',?'pusher'), .... 'pusher'?=>?[ ????????????'driver'?=>?'pusher', ????????????'key'?=>?env('PUSHER_KEY'), ????????????'secret'?=>?env('PUSHER_SECRET'), ????????????'app_id'?=>?env('PUSHER_APP_ID'), ????????????'options'?=>?[ ????????????????'cluster'?=>?'ap1', ????????????????'encrypted'?=>?true ????????????], ????????], .....

三.建立事件

1.代碼如下:

<?php   namespace AppEvents;   use AppEventsEvent; use IlluminateQueueSerializesModels; use IlluminateContractsBroadcastingShouldBroadcast;   class PusherEvent extends Event implements ShouldBroadcast {     use SerializesModels;       public $info;       /**      * PusherEvent constructor.      */     public function __construct($info)     {         $this->info?=?$info; ????} ? ????/** ?????*?指定廣播頻道(對應前端的頻道) ?????*?Get?the?channels?the?event?should?be?broadcast?on. ?????* ?????*?@return?array ?????*/ ????public?function?broadcastOn() ????{ ????????return?['my-channel']; ????} ? ????/** ?????*?指定廣播事件(對應前端的事件) ?????*?@return?string ?????*/ ????public?function?broadcastAs() ????{ ????????return?'my-event'; ????} ? ????/** ?????*?獲取廣播數據,默認是廣播的public屬性的數據 ?????*/ ????public?function?broadcastWith() ????{ ????????return?['info'?=&gt;?$this-&gt;info]; ????} }

2.廣播事件,并不需要監聽器;廣播事件需要繼承接口ShouldBroadcast

?

四.廣播

1.觸發事件

event(new?AppEventsPusherEvent('測試'));

2.前端代碼

nbsp;html&gt;  ??<title>Pusher?Test</title> ??<script></script> ??<script>       // Enable pusher logging - don&#39;t include this in production     Pusher.logToConsole = true;       var pusher = new Pusher(&#39;XXX&#39;, {       cluster: &#39;ap1&#39;,       encrypted: true     });       var channel = pusher.subscribe(&#39;my-channel&#39;);     channel.bind(&#39;my-event&#39;, function(data) {       alert(data.info);     });   </script>

ps:

1.pusher使用curl向https://pusher.com提交數據,所以你需要配置證書;否則提交會失敗

2.如果不配置證書,則需要設置curl的CURLOPT_SSL_VERIFYPEER和CURLOPT_SSL_VERIFYHOST

在vender/pusher/pusher-php-server/lib/Pusher.php中的trigger的

curl_setopt($ch, CURLOPT_POSTFIELDS, $post_value);

下面增加:

curl_setopt($ch,?CURLOPT_SSL_VERIFYPEER,?false); curl_setopt($ch,?CURLOPT_SSL_VERIFYHOST,?false);

更多laravel框架相關技術文章,請訪問laravel教程欄目!

? 版權聲明
THE END
喜歡就支持一下吧
點贊9 分享