一.注冊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'?=>?$this->info]; ????} }
2.廣播事件,并不需要監聽器;廣播事件需要繼承接口ShouldBroadcast
?
四.廣播
1.觸發事件
event(new?AppEventsPusherEvent('測試'));
2.前端代碼
nbsp;html> ??<title>Pusher?Test</title> ??<script></script> ??<script> // Enable pusher logging - don't include this in production Pusher.logToConsole = true; var pusher = new Pusher('XXX', { cluster: 'ap1', encrypted: true }); var channel = pusher.subscribe('my-channel'); channel.bind('my-event', 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);
? 版權聲明
文章版權歸作者所有,未經允許請勿轉載。
THE END