提问者:小点点

拉雷维尔回声没有接收到普赫事件


我的活动在推送者那里收到-

事件-API消息

详细信息-频道:私人聊天,事件:应用程序\事件\消息发送

但是在我的Vue前端,回声没有从推动者那里接收任何事件。

已发送消息。php

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

    public $message;
    public $user;

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

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

闲聊vue

  mounted() {
    Echo.private("chat").listen("MessageSent", (e) => {
      console.log("Received");
      this.allMessages.push(e.message);
      this.fetchMessages();
    });
  },

bootstrap.js

import Echo from 'laravel-echo';

window.Pusher = require('pusher-js');

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: process.env.MIX_PUSHER_APP_KEY,
    cluster: process.env.MIX_PUSHER_APP_CLUSTER,
    forceTLS: true,
});

路线/channels.php

Broadcast::channel('chat', function ($user) {
    return auth()->check();
});

我还设置了广播驱动器=推送器


共2个答案

匿名用户

在MessageSent事件中执行此操作

public function broadcastOn()
{
    Broadcast::routes(['middleware' => ['auth:api']]);
    return new PrivateChannel('chat');
}

并在BroadcastServiceProvider中添加以下行:

Broadcast::routes(['middleware' => ['auth:api']]);

匿名用户

我已经解决了这个问题,把下面的代码从bootstrap.jsapp.js.所以,在我的app.js-

import Echo from 'laravel-echo';

window.Pusher = require('pusher-js');

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: process.env.MIX_PUSHER_APP_KEY,
    cluster: process.env.MIX_PUSHER_APP_CLUSTER,
    forceTLS: true,
});

但我不知道为什么相同的代码在引导中不起作用。js