欢迎光临
我们一直在努力

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' => $this->info];     } }

2.广播事件,并不需要监听器;广播事件需要继承接口ShouldBroadcast

四.广播

1.触发事件

event(new AppEventsPusherEvent('测试'));

2.前端代码

<!DOCTYPE html> <head>   <title>Pusher Test</title>   <script src="https://js.pusher.com/4.0/pusher.min.js"></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> </head>

ps:

1.pusher使用curl向https://pusher.com提交数据,所以你需要配置证书;否则提交会失败

2.如果不配置证书,则需要设置curl的CURLOPT_SSL_VERIFYPEERCURLOPT_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);

赞(0)
【声明】:本博客不参与任何交易,也非中介,仅记录个人感兴趣的主机测评结果和优惠活动,内容均不作直接、间接、法定、约定的保证。访问本博客请务必遵守有关互联网的相关法律、规定与规则。一旦您访问本博客,即表示您已经知晓并接受了此声明通告。