当前位置: 首页 > 知识库问答 >
问题:

Laravel Echo未订阅推送器存在频道,甚至在推送器仪表板中也未订阅

竺鸿骞
2023-03-14

我花了很多时间来解决我的这个问题,阅读文档多次,谷歌在这里和那里:SO,Laracast,Larachat等,但仍然无法让Laravel回声订阅推动者存在频道,它没有显示任何错误在控制台选项卡

公共和私人频道工作正常,用户可以订阅,用户可以监听/触发事件

注意:在创建这篇文章之前,我有一些与我的当前问题相关的搜索问题,它们都没有答案

一些和我类似的问题:

  • https://laravelquestions.com/2020/12/15/laravel-echo-not-joining-presence-channel-in-production/

规格:

  • 拉威尔:7.30。1

资源/js/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,
    authEndpoint: '/api/broadcasting/auth',
    auth: {
        headers: {
            'Authorization': `Bearer ${localStorage['token']}`
        }
    }    
});

路由/api中。php

// https://stackoverflow.com/questions/55555844/authorizing-broadcasting-channel-in-an-spa
Route::post('/broadcasting/auth', function (Request $request) {
    $pusher = new Pusher\Pusher(
        env('PUSHER_APP_KEY'),
        env('PUSHER_APP_SECRET'),
        env('PUSHER_APP_ID'),
        [
            'cluster' => env('PUSHER_APP_CLUSTER')
        ]
    );

    // This will return JSON response: {auth:"__KEY__"}, see comment below
    // https://pusher.com/docs/channels/server_api/authenticating-users
    $response = $pusher->socket_auth($request->request->get('channel_name'), $request->request->get('socket_id'));

    return $response;
})->middleware('auth:sanctum');

路由/channels.php

// https://laravel.com/docs/8.x/broadcasting#authorizing-presence-channels
Broadcast::channel('whatever', function ($user) {
    return [
        'id' => $user->id,
        'name' => $user->name
    ];
});

主页中。vue

...
...
created() {
    Echo.join('whatever') // DOES NOT WORK, Even in mounted() vue lifehook, and in Pusher dashboard, it doesn't show this channel name
        .here((users) => {
            console.table(users)
        })
}

问:为什么Laravel Echo不订阅Pusher presence频道?即使在Pusher中,它也不会显示频道名称:presence which,只有断开连接(在我刷新页面后),然后连接,就像什么都没有发生一样

提前谢谢


共有2个答案

上官凯歌
2023-03-14

1.请确保将广播驱动程序设置为. env之后,做php工匠配置:清除BROADCAST_DRIVER=推进器

2.使你的身份更加真实。php。我喜欢这个

3.检查您的广播。php这是我的开发配置

也许对于您来说,支持\u凭据需要是true

5.检查您的channels.php。我有过

杭泉
2023-03-14

请确保将广播驱动程序设置为env之后,做php artisan config: Clear

使用窗口。Echo.channel加入通道。

 类似资料:
  • 刚开始玩推送通知,我设法处理了所有的订阅过程,我正在数据库中保存endpoint和密钥。我的问题是,如果有的话,我应该遵循什么策略来删除数据库中的旧字幕详细信息?。所以,如果有人允许通知,他们撤销了权限,我怎么知道是谁从数据库中删除了详细信息?。因为如果用户取消订阅,我只会从pushManager获得空订阅。

  • 在使用私人频道时,我无法让echo和pusher正常工作,在谷歌上搜索了两天,找到了nada。 似乎正在发生的是某种身份验证问题(我使用Laravel基本身份验证),因为我可以订阅公共频道 路线/频道。php bootstrap.js default.blade.php(主要布局) 控制台上打印的内容是: 这是一个非常普通的错误,然后为了调试的目的,我试图使用Pusher(而不是laravel e

  • 我正在尝试在Windows Phone8.1上运行parse.com推送通知(来自本教程)。 看来初始化起作用了: 但当我尝试订阅广播频道时,会引发以下异常: 通知平台无法连接云通知服务。(HRESULT异常:0x803E011B) 我还通过将包安全标识符和客户端机密添加到parse.com Windows推送凭据设置(遵循本教程)来验证Windows Store应用程序。但这并不能解决问题。 关

  • 我已经设置了AWS SNS设置与一个主题说'a'。我正在使用Http订阅这个SNS主题(尝试了手动使用AWS控制台联机和使用Java代码)。在这两种情况下,我得到的都是“待确认”。但是,SNS不向提供的URL发送初始“SubscriptionConfironment”。 请注意,我的endpoint已准备好接收http POST通知。当我从我的身边手动发布一个帖子时,我会看到我的servlet正在

  • 通讯方式: 通讯采用HTTP(S)协议,POST方式发生json格式的报文 json格式请求: Content-Type:application/json;charset=utf-8 json格式返回: Content-Type:application/json;charset=utf-8 返回响应说明: 商户处理后同步返回给果盘参数:{"status":1,"info":"返回信息"} json

  • 通讯方式: 通讯采用HTTP(S)协议,POST方式发生json格式的报文 json格式请求: Content-Type:application/json;charset=utf-8 json格式返回: Content-Type:application/json;charset=utf-8 返回响应说明: 商户处理后同步返回给果盘参数:{"status":1,"info":"返回信息"} json