2

这是 Laravel 7 的设置,遵循使用laravel-websockets而不是 Pusher的 pusher 驱动程序的安装指南。

'php artisan websockets:serve' 正在运行,并已连接到浏览器中的 Echo 客户端,并且正在愉快地发送 ping / pong 消息。

但是,当我尝试通过触发事件来发送服务器消息时

broadcast(new TestBroadcastingEvent($event));

我没有看到来自 websockets:serve 日志的活动,也没有在线上的消息(在 DevTools 中)。

我可以看到事件被构造,作业被排队并被执行,我可以看到正在调用的 broadcastOn() 方法。

public function broadcastOn()
{
    \Log::debug("broadcastOn()");
    return new PrivateChannel('order.'.$this->event->ch);
}

如果我将 BROADCAST_DRIVER 切换到“日志”,我会看到那里记录的消息:

[2021-05-07 14:08:59] testing.INFO: Broadcasting [App\Events\TestBroadcastingEvent] on channels [order.111] with payload:
{
    "event": {
        "ch": "111",
        "info": "hello"
    },
    "socket": null
}  

但是,如上所述,将 BROADCAST_DRIVER 设置为“推送器”不会导致进一步的活动。

队列驱动程序设置为“同步”的行为相同,因此不是队列设置。

我唯一的线索是通道身份验证功能没有被调用,但是从文档中并不清楚这是否与发送相关(比如监听身份验证)。

Broadcast::channel('order.{orderId}', function ($user, $orderId) {
    \Log::debug('callback in channels.php');
    return true;
});

任何日志中都没有错误,没有异常或任何明显错误。

我还能看什么来查看消息在哪里丢失?

4

0 回答 0