-
Notifications
You must be signed in to change notification settings - Fork 1.6k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Websocket 系列错误原因及解决方法汇总 | FAQ Enchanted #142
Labels
documentation
Improvements or additions to documentation
Comments
这个还有一种情况(我自己的发生的) 我把原来的docker-compose.yml分开了 然后我就报错了,我发现我所有配置都没错就是无法连接。 (后面我就发现了,可能是因为我把两个容器分开安装,两个docker使用的网络模式可能就不是同一个,所以chatgpt始终无法连接到host=“mirai”的服务) 如果你也是像我一样,分开安装,然后报错,就直接把容器都删掉,重新用一个docker-compose文件安装即可 |
Open
This was referenced Feb 18, 2023
lss233
changed the title
Websocket reconnecting 错误原因及解决方法汇总 | FAQ Enchanted
Websocket 系列错误原因及解决方法汇总 | FAQ Enchanted
Feb 19, 2023
3 tasks
This was referenced Mar 25, 2023
3 tasks
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
当机器人不回你的时候,有很大一种可能就是 ChatGPT 程序正在不断地输出
Websocket reconnecting
错误信息,如下图所示:Websocket 在这里是做什么用的?
让 ChatGPT 接入 QQ 的过程相当复杂,但只要合理的使用现有的开源项目,这个功能就可以实现。
在这里,我们主要使用了两个软件:Mirai 和 chatgpt-mirai-qq-bot。
Mirai 和 chatgpt-mirai-qq-bot 之间则使用 Websocket 进行通信,将两者连接起来。
Mirai 端负责实现 Websocket 通信的功能由一个叫做 mirai-api-http 的插件实现。
chatgpt-mirai-qq-bot 的 Websocket 通信功能则由一个叫 Aridane 的框架实现。
你看见的不断刷新的错误,就是由 Aridane 输出的。
即,整个系统的通信流程为:
错误出现的原因
要让 ChatGPT 收到来自 QQ 的消息,我们得保证上面的每一个通信环节都没有问题才行。
而我们需要关注的地方主要就在
这个环节。
我们从右往左看,先看 Mirai。
1 Mirai:是否加载了 mirai-api-http?
在启动阶段时, Mirai 会输出 mirai-api-http 的运行情况。
你可以观察日志,看看有没有这样下图中白框中的文本:
如果没有,说明你没有安装 mirai-api-http插件。
怎么办?
通常来说,如果你使用的是 Linux 一键脚本部署、 Docker-Compose 部署等方法,那么这个 mirai-api-http 肯定是自带了的。
唯一的可能就是你自己修改了 Docker 容器里的东西,把它给删了。
解决方法:重新部署一次。
对于 Windows 快速部署包 的用户,这个 mirai-api-http 也是自带了的,只不过它是在初始化的过程中帮你安装上的。
出现这个问题的可能原因是初始化的过程中安装失败了。
解决方法:重新执行
初始化.cmd
。对于其他方法的用户。
这就不属于我的已知范畴了,你应该知道如何解决。
2 mirai-api-http: 配置是否正确?
Websocket 连接建立有两要素:
你得保证这两个设置在两个软件之间的设置是一样的。
怎么看?
地址和端口号可以在这里看见:
后面的
localhost:8080
就是现在的地址和端口号。密钥有两种情况:
密钥认证被设置为关闭状态:
密钥认证是开启的状态:
后面的
1234567890
就是你的认证密钥。我怎么知道这些设置是不是正确的?
通常来说,如果你使用的是 Linux 一键脚本部署、 Docker-Compose 部署等方法,那么正确的地址和端口号应该为:
mirai:8080
。含义:
mirai
是地址,8080
是端口。 这是为了让它监听在mirai
容器的8080
端口。对于 Windows 快速部署包 的用户,正确的地址和端口号应该为:
localhost:8080
。含义:本地机器上的 8080 端口。
对于其他方法的用户。
这就不属于我的已知范畴了,你应该知道如何解决。
那密钥呢?
如果你的密钥认证是关闭状态,那么你就可以忽略这个设置。
如果你的密钥认证是开启状态,那么你先记住它,因为我们后面要用到。
我要怎么修改它?
它的设置在
./mirai/config/net.mamoe.mirai-api-http/setting.yml
这里面,你可以看见。3. Aridane <-> mirai-http-api: QQ 没登录
前面说过, Mirai 是用来登录 QQ 的。
如果你没有登录机器人账号,那么也会导致这个问题的出现。
怎么看?
还是刚刚那段日志,我们看最后几句话。
如果你看见了:
这说明 QQ 没有登录。
怎么办?
对于 Linux 一键脚本部署、 Docker-Compose 部署等方法的用户:
第一步: 执行
docker-compose run --rm mirai
开启一个临时用来登录的容器第二步:输入登录命令,登录 QQ,完成验证码
login 把这里换成你的机器人QQ号 把这里换成你机器人的密码 ANDROID_WATCH
然后回车。login 483059481 030513lss233 ANDROID_WATCH
第三步:输入自动登录设置命令。
autologin add 把这里换成你的机器人QQ号 把这里换成你机器人的密码
然后回车。autologin setConfig 把这里换成你的机器人QQ号 PROTOCOL ANDROID_WATCH
然后回车。第四步:登录成功以后,按下
Ctrl + C
退出临时容器。第五步:执行
docker-compose restart mirai
, 重启 mirai 容器对于 Windows 用户,你只需要做第二步和第三步就可以了。
如果你在登录的时候遇到了这个问题:
请参考 #107
4. chatgpt-mirai-qq-bot <-> Aridane: 配置有误
如果前面几步都没问题,那么肯定是这一步有问题。
打开 chatgpt-mirai-qq-bot 的配置文件(即
config.cfg
),你可以看见这么一段:还记得我们在第二步里提到的服务器地址、端口号和密钥吗?它就是填在这里的。
如果你的服务器地址是
localhost
,端口号是8080
,密钥是1234567890
,那你应该这么填:如果你 的服务器地址是
mirai
,端口号是8080
,密钥是1234567890
,那你应该这么填:如果你的密钥认证是关闭状态,那你可以随便填这里的
api_key
。改完以后,重启 chatgpt 即可。
Linux 一键部署、Docker-Compose 用户重启方法:执行
docker-compose restart chatgpt
Windows 重启方法:关掉那个一直在刷 Websocket is reconnecting 的窗口,然后双击
启动ChatGPT.cmd
The text was updated successfully, but these errors were encountered: