首页 > 解决方案 > Laravel 没有向我的 Vue.js 前端发送推送事件

问题描述

在许多教程中,我有一个与 Laravel 后端分离的 Vue.js 项目,我看到一个 Laravel + Vue.js,但我有一个分离的 Vue.js SPA,我不知道我做错了什么。

我已经在前端进行了配置,就是这样:

 const pusher = new Pusher(configMain.PUSHER_APP_KEY, {
    cluster: configMain.PUSHER_APP_CLUSTER
 });
 const pusherChannel = pusher.subscribe('teste');
 pusherChannel.bind('my-event', function(data) {
     console.log(data);
 });

当我在 PUSHER 中使用调试控制台并发送事件时,它工作正常,我收到了它。但是当我尝试从我的后端 Laravel 项目发送事件时,它不起作用。

BROADCAST_DRIVER=pusher
PUSHER_APP_ID=********
PUSHER_APP_KEY=********
PUSHER_APP_SECRET=********
PUSHER_APP_CLUSTER=********

我已经设置了密钥并更改了驱动程序,在配置广播中我有这个:

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

我在 Laravel 中创建了一个事件:

<?php

namespace App\Events;

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

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

    private $message;

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

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new Channel('teste');
    }

    public function broadcastAs()
    {
        return 'my-event';
    }
}

当我在后端执行此操作时:

event(new MyEvent('hello world'));
dd("ENTROU");

我的正面没有收到它,我必须做一些我看不到的事情?

标签: laravelvue.jspusher

解决方案


推荐阅读