1

我在我的项目中使用推送器。在控制台调试中当我想连接到仪表板中的通道时显示事件显示断开状态并且我没有在 javascript 应用程序上获得事件。js代码:

Echo.private(`order.${orderId}`)
    .listen('NewChat', (e) => {
        console.log(e.message);
    }
);

广播配置:

PUSHER_APP_ID=625***
PUSHER_APP_KEY=bcd15f3d3c6*******
PUSHER_APP_SECRET=c8e7e09d21********
PUSHER_APP_CLUSTER=ap2

bootstrap.js:

import Echo from 'laravel-echo'

window.Pusher = require('pusher-js');

window.Echo = new Echo({
    broadcaster: 'pusher',
    key: 'bcd15f3d3***********',
    cluster: 'ap2',
    encrypted: false
});

事件:

public function broadcastOn()
{
    return new PrivateChannel('order.'.$this->order_id);
}

渠道:

Broadcast::channel('order.{orderId}', function () {
    return true;
});

控制台调试状态

4

1 回答 1

0

我没有将 Laravel 与 pusher 结合使用的实际经验,但我看到以下内容:

Broadcast::channel('order.{orderId}',

{orderId}不会被转换为变量值。你需要{$orderId}. 此外,在单引号字符串中执行此操作将不起作用,因为它只会 print {$orderId},因此您需要双引号。

尝试以下操作:

Broadcast::channel("order.{$orderId}",

也许这会解决你的问题,也许不会。

如果不是,您确定private(order.${orderId})使用的是正确的 ID 吗?检查是否return new PrivateChannel('order.'.$this->order_id);使用正确$this->order_id

于 2018-10-18T14:09:19.183 回答