Laravel 不消耗 Pusher 事件
Laravel not consuming Pusher events
这一直是一个长期存在的问题,在我开始之前,这是我已经尝试过的以及我一直在寻找解决方案的地方。
我尝试过的一些东西
我已确保我的集群适用于我正在使用的应用程序:
https://laracasts.com/discuss/channels/laravel/pusher-is-not-receiving-my-message?page=1
我的集群是 eu
我已经尝试了所有命名空间的变体:
https://laracasts.com/discuss/channels/laravel/echo-broadcast-event-listener-not-being-triggered
.App.Events.DefaultPusherEvent
、App\Events\DefaultPusherEvent
、.DefaultPusherEvent
等...
我的场景
所以我正在尝试使用 Laravel 和 Pusher 来掌握实时更新,所以最终我可以实现实时通知 + 我们将来需要的任何其他东西。
我已经能够按照 Laravel 文档向我的推送器应用程序广播。
所以这一切都很好,没有问题,我遇到的唯一问题实际上是尝试使用 Laravel 的 echo 甚至 Pusher 的香草代码来消耗此事件。
我以前遇到过这个问题,我的解决方案是不使用私人频道(因为它们对我来说根本不起作用)。但现在我需要功能。
进度
在发布这个问题之前,我重新安装了 Laravel 并再次安装,但结果是一样的。我什至做了一个登录系统来确保它不是因为我的用户不是因为我的用户没有登录到应用程序。
ListenForPusherEvents(){
Echo.private(`datalev`)
.listen('DefaultPusherEvent', (e) => {
console.log(e);
console.log('Something');
});
}
我也没有控制台错误,因为我已经使用推送器 'broadcasting/auth'
目录
对用户进行了身份验证
这是验证私人频道用户的代码。
public function PusherAuthentication(Request $request)
{
$pusher = new Pusher(env('PUSHER_APP_KEY'), env('PUSHER_APP_SECRET'), env('PUSHER_APP_ID'), ['cluster' => 'eu']);
$pusher->socket_auth($request->input('channel_name'), $request->input('socket_id'));
}
确保您的 broadcasting/auth 正确路由 returns 具有授权密钥的 JSON 对象。 Pusher 使用它来验证您对频道的订阅。
过程如下:
您的客户想要订阅,并询问 Laravel 是否可以(/broadcasting/auth AJAX 调用)
您的 Laravel 确认没问题并通知推送者;您将获得一个唯一的授权密钥,该密钥通过 AJAX
发送回您的客户端
您的 JavaScript 然后可以使用它从您的 Laravel 收到的授权密钥订阅 Pusher 频道,Pusher 将其称为有效密钥,因此 Pusher会接受的
这一直是一个长期存在的问题,在我开始之前,这是我已经尝试过的以及我一直在寻找解决方案的地方。
我尝试过的一些东西
我已确保我的集群适用于我正在使用的应用程序:
https://laracasts.com/discuss/channels/laravel/pusher-is-not-receiving-my-message?page=1
我的集群是 eu
我已经尝试了所有命名空间的变体:
https://laracasts.com/discuss/channels/laravel/echo-broadcast-event-listener-not-being-triggered
.App.Events.DefaultPusherEvent
、App\Events\DefaultPusherEvent
、.DefaultPusherEvent
等...
我的场景
所以我正在尝试使用 Laravel 和 Pusher 来掌握实时更新,所以最终我可以实现实时通知 + 我们将来需要的任何其他东西。
我已经能够按照 Laravel 文档向我的推送器应用程序广播。
所以这一切都很好,没有问题,我遇到的唯一问题实际上是尝试使用 Laravel 的 echo 甚至 Pusher 的香草代码来消耗此事件。
我以前遇到过这个问题,我的解决方案是不使用私人频道(因为它们对我来说根本不起作用)。但现在我需要功能。
进度
在发布这个问题之前,我重新安装了 Laravel 并再次安装,但结果是一样的。我什至做了一个登录系统来确保它不是因为我的用户不是因为我的用户没有登录到应用程序。
ListenForPusherEvents(){
Echo.private(`datalev`)
.listen('DefaultPusherEvent', (e) => {
console.log(e);
console.log('Something');
});
}
我也没有控制台错误,因为我已经使用推送器 'broadcasting/auth'
目录
这是验证私人频道用户的代码。
public function PusherAuthentication(Request $request)
{
$pusher = new Pusher(env('PUSHER_APP_KEY'), env('PUSHER_APP_SECRET'), env('PUSHER_APP_ID'), ['cluster' => 'eu']);
$pusher->socket_auth($request->input('channel_name'), $request->input('socket_id'));
}
确保您的 broadcasting/auth 正确路由 returns 具有授权密钥的 JSON 对象。 Pusher 使用它来验证您对频道的订阅。
过程如下:
您的客户想要订阅,并询问 Laravel 是否可以(/broadcasting/auth AJAX 调用)
您的 Laravel 确认没问题并通知推送者;您将获得一个唯一的授权密钥,该密钥通过 AJAX
发送回您的客户端
您的 JavaScript 然后可以使用它从您的 Laravel 收到的授权密钥订阅 Pusher 频道,Pusher 将其称为有效密钥,因此 Pusher会接受的