[Bug?]: ForwardWebSocket 断开连接时 会卡住bot端20秒
请确保您已阅读以上注意事项,并勾选下方的确认框。
- [X] 我已经仔细阅读上述内容
- [X] 我已经使用 最新构建 测试过,问题依旧存在。
- [X] 我已经在 Issue Tracker 中找过我要提出的问题,没有找到相同问题的ISSUE。
- [X] 我已知晓并同意,此处仅用于汇报程序中存在的问题。若这个 Issue 是关于其他非程序本身问题,则我的 Issue 可能会被无条件自动关闭或/并锁定。(其它疑问请考虑加入TG群询问或在discussions中提问)
Lagrange项目
OneBot
所使用/依赖的Lagrange项目对应的commit
Docker IMAGE ID 29337d7b3d51
运行环境
Linux
运行架构
x64
连接方式
正向 WebSocket
重现步骤
- 开启正向WS
- 使用NoneBot连接Lagrange
- 退出NoneBot
- NoneBot退出时卡住20s
期望的结果是什么?
NoneBot退出时不被卡住
实际的结果是什么?
NoneBot退出时卡住20s
简单的复现代码/链接(可选)
No response
Trace 级别日志记录(可选)
lagrange | info: Lagrange.OneBot.Core.Network.Service.ForwardWSService[10]
lagrange | The server is started at http://*:8081/
lagrange | info: Lagrange.OneBot.Core.Network.Service.ForwardWSService[11]
lagrange | Connect(65dbc6a4-cdd5-4899-b294-9380a211ec82)
lagrange | trce: Lagrange.OneBot.Core.Network.Service.ForwardWSService[13]
lagrange | Send(65dbc6a4-cdd5-4899-b294-9380a211ec82) {"sub_type":"connect","meta_event_type":"lifecycle","time":1723443827,"self_id":3651396264,"post_type":"meta_event"}
lagrange | trce: Lagrange.OneBot.Core.Network.Service.ForwardWSService[13]
lagrange | Send(65dbc6a4-cdd5-4899-b294-9380a211ec82) {"interval":5000,"status":{"app_initialized":true,"app_enabled":true,"app_good":true,"online":true,"good":true},"meta_event_type":"heartbeat","time":1723443827,"self_id":3651396264,"post_type":"meta_event"}
lagrange | info: Lagrange.OneBot.Core.Network.Service.ForwardWSService[14]
lagrange | Disconnect(65dbc6a4-cdd5-4899-b294-9380a211ec82)
lagrange | trce: Lagrange.Core.BotContext[0]
lagrange | [2024-08-12 06:23:52] [ServiceContext] [DEBUG]: Outgoing SSOFrame: Heartbeat.Alive
lagrange | trce: Lagrange.Core.BotContext[0]
lagrange | [2024-08-12 06:24:02] [ServiceContext] [DEBUG]: Outgoing SSOFrame: Heartbeat.Alive
lagrange | trce: Lagrange.Core.BotContext[0]
lagrange | [2024-08-12 06:24:12] [ServiceContext] [DEBUG]: Outgoing SSOFrame: Heartbeat.Alive
补充说明(可选)
NB端除了OB11没有加载任何其他东西
NapCatQQ
Lagrange
请移步到 nonebot 的 issue, 根据 Lagrange.OneBot 的日志, 这个连接已经完全断开了
或者你可以提供一下你的 NoneBot 项目的代码么?
或者你可以提供一下你的 NoneBot 项目的代码么?
NB端除了OB11没有加载任何其他东西
或者你可以提供一下你的 NoneBot 项目的代码么?
NB端除了OB11没有加载任何其他东西
那你提供一下配置可以么?
另外问问 Disconnect(65dbc6a4-cdd5-4899-b294-9380a211ec82) 是关闭之后马上打印的还是等待20s之后才打印的?
https://github.com/user-attachments/assets/c1554652-a02b-4bed-b864-7d912d03020e
out.mp4
这是NB的问题吧,对接其他应用端也这样吗?还是只有lgr这样?
这是NB的问题吧,对接其他应用端也这样吗?还是只有lgr这样?
可以看补充说明,napcatqq并没有这个问题
Linux 下无法复现
Windows 待测
~~看nb日志输出的时间是正常的,可能是有东西卡住了日志打印到控制台,不是nb本身卡住~~ 看错了
试了一下aiohttp作为nb的WebSocket驱动,正常 所以是websockets的问题?
windows 下也没有复现成功
@CwkDark 根据websockets日志看大概是tcp连接没有正确关闭
成功复现, 目前是仅在 Linux 上出现, 问题排查中