Laravel 5.4的Pusher通知未按预期工作

时间:2017-06-26 07:04:43

标签: javascript php laravel notifications pusher

所以我现在已经坚持了一段时间,使用Laravel事件和推送器API。 我创建了事件和广播,但是当我使用推送器Javascript API访问时它返回空数组,当我尝试在路由中打印它时它也返回空数组,同时如果我检查Laravel log stoarage / logs / laravel.log我看到的确切我期待的Javascript和路线。 我的代码:

.ENV

BROADCAST_DRIVER=pusher
PUSHER_APP_ID=******
PUSHER_APP_KEY=524**************8
PUSHER_APP_SECRET=d2**************c

Boadcasting.php

'default' => env('BROADCAST_DRIVER', 'pusher'),
    'connections' => [

    'pusher' => [
    'driver' => 'pusher',
    'key' => env('PUSHER_APP_KEY'),
    'secret' => env('PUSHER_APP_SECRET'),
    'app_id' => env('PUSHER_APP_ID'),
    'options' => [
    'cluster' => 'us2',
    'encrypted' => true
    ],
    ],

事件类:ProjectEvent.php

<?php

namespace App\Events;

use Illuminate\Broadcasting\Channel;
use Illuminate\Queue\SerializesModels;
use Illuminate\Broadcasting\PrivateChannel;
use Illuminate\Broadcasting\PresenceChannel;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Broadcasting\InteractsWithSockets;
use Illuminate\Contracts\Broadcasting\ShouldBroadcast;

class ProjectEvent implements ShouldBroadcast
{
    use Dispatchable, InteractsWithSockets, SerializesModels;

    public $username;

    public $message;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($username)
    {
        $this->username = $username;
        $this->message  = "{$username} sent you a message";
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return Channel|array
     */
    public function broadcastOn()
    {
        return ['project-update'];
    }

}

路线:

Route::get('/test', function () {
    print_r(event(new App\Events\ProjectEvent('Michel')));
    //return "Event has been sent!";
});

Route::get('/view', function () {
    return view('testevent');
});

testevent.blade.php

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
</head>
    <body>

      <script src="http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.4/jquery.min.js"></script>
      <script src="http://js.pusher.com/3.1/pusher.min.js"></script>

      <script type="text/javascript">

      Pusher.logToConsole = true;

      var pusher = new Pusher('524************8', {
        cluster: 'us2',
        encrypted: true
      });

      var channel = pusher.subscribe('project-update');

      channel.bind('App\\Events\\ProjectEvent', function(data) {
        alert(data.message);
      });
      </script>
    </body>
    </html>

我真的无法弄清楚哪里出错了,因为我能够在日志中看到事件,而JS警报不起作用,我也尝试在路线上转储事件,它返回空array()

0 个答案:

没有答案