2 回答
TA贡献1909条经验 获得超7个赞
我找到了解决我的问题的方法!
事实上,我只是没有正确查看 Laravel-echo-server 发出的日志。
[2:54:48 PM] - Eri_5PZDB5gkvShrBBBH authenticated for: private-App.User.4016
[2:54:48 PM] - Eri_5PZDB5gkvShrBBBH joined channel: private-App.User.4016
Channel: ami_database_private-App.User.4016
Event: App\Events\UpdateRequest
如果仔细观察,我的用户加入了频道,private-App.User.4016因为这部分是由 Laravel Echo 在客户端管理的。
但是如果我们看下面两行,我们会看到当我的事件被触发时,它会在通道上发布,ami_database_private-App.User.4016因为这部分是由 Laravel 管理的,并且默认情况下会为 Redis 条目添加前缀。
只需转到该config/database.php文件并编辑以下代码:
'redis' => [
// ...
'options' => [
'cluster' => env('REDIS_CLUSTER', 'predis'),
'prefix' => Str::slug(env('APP_NAME', 'laravel'), '_').'_database_',
],
// ...
],
到
'redis' => [
// ...
'options' => [
'cluster' => env('REDIS_CLUSTER', 'predis'),
'prefix' => '',
],
// ...
],
这样,Laravel 就没有在他发布事件的频道名称前加上前缀,一切都恢复正常!
希望能帮助到你 !
TA贡献1765条经验 获得超5个赞
您也可以将此前缀添加为 MIX_ 环境变量,或将其添加到前端和后端项目的管道环境中,并将其附加到通道或编写名为 echoListen('channel-name') 的包装函数,该函数返回回声实例。
const echoPrivate = (channel) => {
return new Echo({
...options
}).private(process.env.MIX_CHANNEL_PREFIX + channel);
};
const echoChannel = (channel) => {
return new Echo({
...options
}).channel(process.env.MIX_CHANNEL_PREFIX + channel);
};
export {
echoPrivate,
echoChannel,
};
- 2 回答
- 0 关注
- 258 浏览
添加回答
举报