首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么Laravel广播事件总是使用"laravel_database_channel“频道,如何改变它?

为什么Laravel广播事件总是使用"laravel_database_channel“频道,如何改变它?
EN

Stack Overflow用户
提问于 2019-09-05 22:17:42
回答 1查看 394关注 0票数 1

我尝试将Laravel-echo包含在项目中。我正在使用docker-compose容器,并为redis和Laravel-echo-server添加了2个容器。所有容器都工作正常。(php,nginx,postgres,redis,laravel-echo)

为广播和redis设置.env。为广播制作事件,并尝试使用简单的执行脚本

event(新建测试(“LegalizationImporterMessage”));

在客户端js (Vue)上,我可以连接到Laravel echo。

事件总是使用"laravel_database_channel“

问题是,我不知道必须在哪里更改事件使用我通道而不是"laravel_database_channel“的smth

我尝试过更改"broadcastOn“函数,但它不起作用。

.env文件

代码语言:javascript
复制
BROADCAST_DRIVER=redis
CACHE_DRIVER=file
QUEUE_CONNECTION=redis
SESSION_DRIVER=file
SESSION_LIFETIME=120

REDIS_HOST=redis
REDIS_PASSWORD=null
REDIS_PORT=6379

Laravel-echo-server.json

代码语言:javascript
复制
{
  "authHost": "nginx",
  "authEndpoint": "/broadcasting/auth",
  "clients": [],
  "database": "redis",
  "databaseConfig": {
    "redis": {
      "port": "6379",
      "host": "redis"
    }
  },
  "devMode": true,
  "host": "",
  "port": "6001",
  "protocol": "http",
  "socketio": {},
  "secureOptions": 67108864,
  "sslCertPath": "",
  "sslKeyPath": "",
  "sslCertChainPath": "",
  "sslPassphrase": "",
  "subscribers": {
    "http": true,
    "redis": true
  },
  "apiOriginAllow": {}
}

EventFile

代码语言:javascript
复制
class LegalizationImporterMessage implements ShouldBroadcast
{
    use  SerializesModels;

    public $message;

    /**
     * Create a new event instance.
     *
     * @return void
     */
    public function __construct($message)
    {
        $this->message = $message;
    }

    /**
     * Get the channels the event should broadcast on.
     *
     * @return \Illuminate\Broadcasting\Channel|array
     */
    public function broadcastOn()
    {
        return new Channel('channel');
    }
}
代码语言:javascript
复制
laravel-echo_1  | Channel: laravel_database_channel
laravel-echo_1  | Event: App\Events\LegalizationImporterMessage
laravel-echo_1  | Channel: laravel_database_channel
laravel-echo_1  | Event: App\Events\LegalizationImporterMessage
laravel-echo_1  | Channel: laravel_database_channel
laravel-echo_1  | Event: App\Events\LegalizationImporterMessage
laravel-echo_1  | Channel: laravel_database_channel
laravel-echo_1  | Event: App\Events\LegalizationImporterMessage
laravel-echo_1  | Channel: laravel_database_channel
laravel-echo_1  | Event: App\Events\LegalizationImporterMessage
laravel-echo_1  | Channel: laravel_database_channel
laravel-echo_1  | Event: App\Events\LegalizationImporterMessage
laravel-echo_1  | Channel: laravel_database_channel
laravel-echo_1  | Event: App\Events\LegalizationImporterMessage
laravel-echo_1  | Channel: laravel_database_channel
laravel-echo_1  | Event: App\Events\LegalizationImporterMessage
EN

回答 1

Stack Overflow用户

发布于 2019-12-12 13:29:17

这是由config('database.redis.options.prefix')在config/database.php中设置的。要设置空白前缀,请将以下内容添加到.env中

代码语言:javascript
复制
REDIS_PREFIX=

这将确保您没有您想要的前缀,您的广播现在应该可以工作了。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57807511

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档