laravel - 广播 laravel 事件和多个 channel

标签 laravel redis socket.io

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

class TestEvent implements ShouldBroadcast 此类定义需要 broadcastOn 方法,该方法向监听器广播一个或多个带有数据的 channel 。在我的例子中,监听器是 server.js

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

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

非常感谢

最佳答案

非常简单!只需在 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 事件和多个 channel ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53797906/

相关文章:

node.js - Socket.io跨域连接失败; 'XMLHttpRequest cannot load ...'

PHP fatal error :Uncaught Error: Failed opening required 'new-project/vendor/autoload.php' (include_path ='.;C:\php\pear' ) in E:\new-project\artisan:18

php - 拉维尔 4.2 : Include a PHP file (library) into controller

python - 使用redis实现流控时如何防止race condition?

angularjs - Angular JS 和 Web 套接字

node.js - 带有 express : Missing PFX or certificate + private key. 的 socket.io 中的 SSL

javascript - 从 PHP 转换为 JSON 文件

php - Laravel Eloquent - 等同于 first() for last?

data-structures - 需要帮助在 Redis/NoSQL 中概念化

python - Tornado celery 不能使用 gen.Task 或 CallBack