gpt4 book ai didi

laravel - 如何解决 Laravel Broadcasts + Pusher..?

转载 作者:行者123 更新时间:2023-12-04 12:39:02 25 4
gpt4 key购买 nike

我正在关注 Laravel Documentation使用 Pusher 设置广播,它看起来很简单,但我还没有让它工作,所以我一定是在某个地方犯了错误。

这是我所做的:

服务器端

我创建了一个 Event实现 ShouldBroadcastNow接口(interface)并定义broadcastsOn()方法。

class ThreadMessageCreated implements ShouldBroadcastNow {
use Dispatchable, InteractsWithSockets, SerializesModels;

public function broadcastOn() {
return new Channel('bobtest');
}

我正在从我的一个 API Controller 中引发事件:
public function createMessage(Thread $thread, Request $request) {
...
event(new ThreadMessageCreated($message, $thread));
return $message;
}

我已经在我的 .env 中配置了我的推送器凭据。文件。

客户端

我已经在客户端配置了 Laravel Echo(通过 angular-laravel-echo 包)并为我的客户端订阅了 channel 。
ngOnInit() {
this.echo
.join('bobtest', 'public')
.listen('bobtest', 'ThreadMessageCreated')
.subscribe(()=>alert('message received'));
console.log(this.echo);
}

但是,当我的 API 端点被命中时,该事件被触发,但我在客户端看不到任何东西。

因此,我在 broadcastOn() 方法中添加了日志记录,以验证它是否被调用。然后我将驱动程序从 pusher 更改为至 log我确实看到广播信息被写入 laravel.log文件。

所以,我假设广播也在使用 Pusher 驱动程序时发生,并且要么没有从 Laravel 发送出去,要么没有被客户端接收。

我是 sockets、pusher 和 Laravel Echo 的新手,所以我不确定在哪里可以找到更多信息来追踪它。
  • 我在 laravel.log 中没有看到任何错误文件。
  • 我在客户端的 Chrome 开发工具中没有看到任何错误。
  • 我登录了 pusher,“错误日志”选项卡中没有错误

  • 我该怎么做才能获得更多详细信息以找出问题所在?

    谢谢! :-)

    [更新]
    我可以看到广播出现在我的推送者帐户中,所以问题似乎出在客户端。也许我没有正确订阅正确的 channel ?

    另外,我只使用 Laravel 作为后端,使用 JWT 身份验证。我目前没有使用 laravel csrf token ,不确定这是否相关。

    最佳答案

    我现在了解到我可以在开发工具中看到 Web 套接字数据。我假设这个错误之前存在,我只是没有注意到它。我想 101 状态代码对我来说并不突出:-o

    但是在查看开发工具后,我可以清楚地看到这个错误:

    {
    message: "App key xxx not in this cluster. Did you forget to specify the cluster?",
    event: "pusher:error"
    }

    查看 Web Socket 事件:

    开发工具 > 网络 > 过滤器 > WS(Web 套接字):

    Web Sockets in Chrome Dev Tools

    就我而言,我只需要在 Laravel Echo 配置中指定集群:
    window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'xxxxxxxxxxxxxxxxxxxx',
    cluster: 'us2', <--------------[pusher needs a cluster :-)]
    host: 'http://the-host.com',
    auth: {
    headers: {
    'Authorization': 'Bearer ' + token
    }
    }
    });

    关于laravel - 如何解决 Laravel Broadcasts + Pusher..?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52789013/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com