广播 laravel 事件和多个频道

Posted

技术标签:

【中文标题】广播 laravel 事件和多个频道【英文标题】:broadcasting laravel event and multiple channels 【发布时间】:2019-05-16 19:08:48 【问题描述】:

我是 laravel 的新手,所以我在谷歌上搜索了很多关于如何在 laravel 框架中使用 redis、socket.io 创建 websocket 的不同方法。 最后我的 websocket 按我的预期工作。但是我仍然有与 websockets 相关的未解决的问题。 你能帮我找到答案吗?

class TestEvent implements ShouldBroadcast 此类定义需要使用 broadcastOn 方法向侦听器广播一个或多个带有数据的通道。我的案例中的侦听器是server.js

redis.subscribe('test-channel', 'test-channel-new');
redis.on('message', function (channel, message) ..

如您所见,我想订阅两个频道,但每个频道的返回值不同。而且我没有运气找到任何解释它是如何实现的。我是否分别为每个频道创建了新事件,或者存在使用广播的一些技巧?

非常感谢

【问题讨论】:

【参考方案1】:

这很容易!只需在 broadcastOn 方法中返回 Channels 数组 我只是这样做了: 示例:

public function broadcastOn()

    return [
        new PrivateChannel('App.Message.' . $this->message->to_user_id),
        new PrivateChannel('App.Message.'. $this->message->to_user_id .'.From.'. $this->message->from_user_id)
    ];

【讨论】:

以上是关于广播 laravel 事件和多个频道的主要内容,如果未能解决你的问题,请参考以下文章

Laravel事件不是广播

无法广播客户端事件(连接未订阅频道私聊)

Laravel 使用 Socket.io 广播到私人频道

laravel Echo 不监听频道和事件

无法使用 Redis 和 Laravel 5.3 在私有频道上广播通知

为啥 laravel 广播频道有默认前缀?