解决在Laradock上搭建Laravel-Echo-Server时出现的“NOAUTH身份验证需要”的问题
由于长时间的调查仍然没有找到答案,我只能将注意力转移到其他事件的应对措施上,并做一些备忘录。
大致描述
使用Laradock
$ docker-compose up -d redis laravel-echo-server
当为双向通信准备容器时,奇怪的是,只有laravel-echo-server在几秒钟后就会崩溃。
看到日志
[ioredis] Unhandled error event: ReplyError: NOAUTH Authentication required.
中略
[UnhandledPromiseRejection: This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). The promise rejected with the reason "Redis could not subscribe.".] {
code: 'ERR_UNHANDLED_REJECTION'
}
这个错误。
虽然我理解了写的内容,但是用了好几个小时才找到解决办法。
解决方案
在初始状态下,laradock的.env文件中已经设置了secret_redis作为redis的密码。如果不做任何更改,启动redis容器时将使用此密码,并且在通信时也会需要使用它。
### REDIS #################################################
REDIS_PORT=6379
REDIS_PASSWORD=secret_redis ←これ
因此,在laradock/laravel-echo-server/laravel-echo-server.json文件的databaseConfig部分中。
"password":"secret_redis"
在添加完“ を”后,重新构建laravel-echo-server的容器。
$ docker-compose up -d --build laravel-echo-server
✔ Running at localhost on port 6001
✔ Channels are ready.
✔ Listening for http events...
✔ Listening for redis events...
Server ready!
好的。