Laravel Echo 在 Laravel 8-vue js "^2.5.17" 版本中没有收到 Pusher 事件

Posted

技术标签:

【中文标题】Laravel Echo 在 Laravel 8-vue js "^2.5.17" 版本中没有收到 Pusher 事件【英文标题】:Laravel Echo not receiving Pusher event in Laravel 8- vujs "^2.5.17" version 【发布时间】:2021-05-30 08:34:04 【问题描述】:

我已在推送器调试控制台中收到事件详细信息,但无法在浏览器中获得任何响应(无控制台日志)。先生/女士,请帮帮我

我在 app.js 中编写 Echo

created () 
    window.Echo.channel('privateChat')
        .listen('ChatEvent', (e) => 
            console.log(e);
        );

事件广播功能

public function sendMessage(Request $request)

    $user = Auth::user();
    $message = new Message();
    $message->user_id = $user->id;
    $message->message = $request->message;
    $message->friend_id = $request->friendID;
    $message->my_id = $user->id;
    $message->save();
    // broadcast(new MessageSent($user, $message))->toOthers();
    event(new ChatEvent($request->friendID));
    return ['status' => 'Message Sent!'];

广播服务提供商

class BroadcastServiceProvider extends ServiceProvider

public function boot()

Broadcast::routes();
Broadcast::routes(['middleware' => ['jwt.auth']]);
require base_path('routes/channels.php');


chatEvent.php 中的事件

class ChatEvent implements ShouldBroadcast

use Dispatchable, InteractsWithSockets, SerializesModels;

public $friendID;

public function __construct($friendID)

    return $this->friendID = $friendID;

public function broadcastOn()

    return new PrivateChannel('privateChat');


channels.php 中的路由

Broadcast::channel('privateChat', function () 
return Auth::check();
);

aap/js/bootstrap.js 中的 Laravel-Echo 配置

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,
    auth: 
        headers: 
            Authorization: 'Bearer ' + localStorage.getItem("token")
        ,
    ,
);

版本

"laravel-echo": "^1.10.0",
"laravel-mix": "^6.0.6",
"popper.js": "^1.12",
"pusher-js": "^7.0.3",
"vue": "^2.5.17",
"laravel": "8",

【问题讨论】:

请发布你的 Laravel Echo 配置。 ``` 从 'laravel-echo' 导入 Echo; window.Pusher = require('pusher-js'); window.Echo = new Echo( 广播器:'pusher',key:process.env.MIX_PUSHER_APP_KEY,集群:process.env.MIX_PUSHER_APP_CLUSTER,forceTLS:true,auth: headers: Authorization:'Bearer' + localStorage.getItem( "令牌") , , ); ``` Uzair Riaz 先生,对不起先生,我无法以正确的格式发布它,所以我将配置文件放入我的问题部分,请检查 您能否尝试在 channels.php 中返回 true 而不是 Auth::check(),以检查这是否是频道身份验证问题? 【参考方案1】:

不要使用window.echo.channel(),而是使用window.echo.private()

还要确保您在 .env 文件中设置了正确的广播驱动程序。如果你使用 pusher,它应该是 BROADCAST_DRIVER=pusher,然后是 php artisan config:clear

【讨论】:

以上是关于Laravel Echo 在 Laravel 8-vue js "^2.5.17" 版本中没有收到 Pusher 事件的主要内容,如果未能解决你的问题,请参考以下文章

在 Laravel 中使用 echo 查看输出消息

Laravel Echo 私人频道和 Laravel echo 服务器 |雷迪斯

使用 Laravel Echo、laravel-echo-server 和 socket.io 广播将不起作用

Laravel websockets + Laravel Echo 不听我的事件

Laravel 事件广播没有被拾取 laravel-echo-server

Laravel-echo-server 码头化问题