在使用私人频道时,我无法让echo和pusher正常工作,在谷歌上搜索了两天,找到了nada。
似乎正在发生的是某种身份验证问题(我使用Laravel基本身份验证),因为我可以订阅公共频道
路线/频道。php
Broadcast::channel('private-ci-received-{userId}', function ($user, $userId) {
return (int) $user->id === (int) $userId;
});
Broadcast::channel('private-ci-received-{toUserId}', function ($currentUser, $toUserId) {
return true;
});
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,
logToConsole: true,
encrypted: true,
});
default.blade.php(主要布局)
Pusher.logToConsole = true;
Echo.logToConsole = true;
Echo.private('ci-received-{{ Auth::user()->id}}')
.listen('.CIReceived', (e) => {
console.log(e);
});
控制台上打印的内容是:
Pusher : No callbacks on private-ci-received-1 for pusher:subscription_error
这是一个非常普通的错误,然后为了调试的目的,我试图使用Pusher(而不是laravel echo)绑定错误
var pusher = new Pusher('MYSECRETAPPKEYHERE', {
cluster: 'us2',
forceTLS: true
});
var channel = pusher.subscribe('private-ci-received-1');
channel.bind('pusher:subscription_error', function(data) {
console.log(data);
});
console.log(数据)输出
JSON returned from webapp was invalid, yet status code was 200
默认的AuthEndPoint是 /broadcasting/authIIRC我认为它期望返回JSON,但它从我的页面返回超文本标记语言CODE。
这些路由是由框架本身创建的,根据我所阅读的内容,Laravel echo和Laravel Auth应该可以很好地协同工作,而不需要太多的修改。
我的env文件是正确的,我正在使用pusher作为广播驱动程序,并且BroadcastServiceProvider没有注释。
有人能解释这件事吗?谢谢
在广播中,您不需要在频道中添加私人频道。php这是自动完成的
试试这个
Broadcast::channel('ci-received-{userId}', function ($user, $userId) {
return (int) $user->id === (int) $userId;
});
在您的. env
文件中设置APP_DEBUG=true
,并在浏览器开发工具的网络部分检查您的授权路由的HTTP响应。如果身份验证成功,您的laravel应用程序应该像这样响应JSON:
{"auth": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"}
如果出现错误,它将在响应中显示,因为您将调试模式设置为true。
这对我有用
的默认值。env是广播驱动程序=log
请换成
BROADCAST_DRIVER=pusher
我也得到了["没有回调私人用户.1的推动者:subscription_error"]
在做了上述更改之后,它对我来说很好
我花了很多时间来解决我的这个问题,阅读文档多次,谷歌在这里和那里:SO,Laracast,Larachat等,但仍然无法让Laravel回声订阅推动者存在频道,它没有显示任何错误在控制台选项卡 公共和私人频道工作正常,用户可以订阅,用户可以监听/触发事件 注意:在创建这篇文章之前,我有一些与我的当前问题相关的搜索问题,它们都没有答案 一些和我类似的问题: https://laravelquesti
我正在尝试创建以下链: 因此,我需要得到5。但是在执行1,2和3之前,4。 代码运行正常,但我想退出 从
我已经创建了一个通知系统,所有的设置和它的工作罚款,当我发送通知到推动者。但是当我试图在私人频道上收听时,我会出错。 这是我的bootstrap.js文件laravel-echo代码 这是我的主要html的元标记内容 以下是在应用程序中侦听的代码。js 这是我在控制台上遇到的错误 邮递http://localhost:3000/broadcasting/auth 419(身份不明) 提前谢谢
大家好,我工作与Laravel回声和SocketIO没有Vue只有jQuery,但我有一个问题与私人渠道在这里我向你展示,我有两个事件正常和私人渠道正常渠道(todocanales我的事件Hola活动)工作正常,当我午餐的事件 在我的laravel echo服务器控制台中,向我展示: 在浏览器控制台中,我得到 ~~~对象{数据:对象,套接字:null}~~~ 所有完美的,但与私人频道我有问题Lar
我试图用Laravel Echo在私人频道上收听,但它不只在私人频道上收听,公共频道工作正常。 我也在使用Beyondcode/Laravel-WebSocket包,它在WebSocket仪表板面板中显示了所有的连接和事件。它显示了包本身的私有连接、我的公共连接和所有触发的事件(私有和公共),但没有显示我的私有连接 如果触发该事件并将数据保存在数据库中,则所有操作都完全正常,只是在视图中,我没有从
刚开始玩推送通知,我设法处理了所有的订阅过程,我正在数据库中保存endpoint和密钥。我的问题是,如果有的话,我应该遵循什么策略来删除数据库中的旧字幕详细信息?。所以,如果有人允许通知,他们撤销了权限,我怎么知道是谁从数据库中删除了详细信息?。因为如果用户取消订阅,我只会从pushManager获得空订阅。