Lagrange.Core icon indicating copy to clipboard operation
Lagrange.Core copied to clipboard

[Bug?]: ForwardWebSocket 断开连接时 会卡住bot端20秒

Open shoucandanghehe opened this issue 1 year ago • 18 comments

请确保您已阅读以上注意事项,并勾选下方的确认框。

  • [X] 我已经仔细阅读上述内容
  • [X] 我已经使用 最新构建 测试过,问题依旧存在。
  • [X] 我已经在 Issue Tracker 中找过我要提出的问题,没有找到相同问题的ISSUE。
  • [X] 我已知晓并同意,此处仅用于汇报程序中存在的问题。若这个 Issue 是关于其他非程序本身问题,则我的 Issue 可能会被无条件自动关闭或/并锁定。(其它疑问请考虑加入TG群询问或在discussions中提问)

Lagrange项目

OneBot

所使用/依赖的Lagrange项目对应的commit

Docker IMAGE ID 29337d7b3d51

运行环境

Linux

运行架构

x64

连接方式

正向 WebSocket

重现步骤

  1. 开启正向WS
  2. 使用NoneBot连接Lagrange
  3. 退出NoneBot
  4. 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没有加载任何其他东西 595f478adabdfff898bfdf920439cc1b NapCatQQ 0fb09851704351d01c9a447301a91349 Lagrange

shoucandanghehe avatar Aug 12 '24 06:08 shoucandanghehe

请移步到 nonebot 的 issue, 根据 Lagrange.OneBot 的日志, 这个连接已经完全断开了

DarkRRb avatar Aug 12 '24 11:08 DarkRRb

或者你可以提供一下你的 NoneBot 项目的代码么?

DarkRRb avatar Aug 12 '24 11:08 DarkRRb

或者你可以提供一下你的 NoneBot 项目的代码么?

NB端除了OB11没有加载任何其他东西

shoucandanghehe avatar Aug 12 '24 12:08 shoucandanghehe

或者你可以提供一下你的 NoneBot 项目的代码么?

NB端除了OB11没有加载任何其他东西

那你提供一下配置可以么? 另外问问 Disconnect(65dbc6a4-cdd5-4899-b294-9380a211ec82) 是关闭之后马上打印的还是等待20s之后才打印的?

DarkRRb avatar Aug 12 '24 12:08 DarkRRb

https://github.com/user-attachments/assets/c1554652-a02b-4bed-b864-7d912d03020e

shoucandanghehe avatar Aug 12 '24 12:08 shoucandanghehe

out.mp4

这是NB的问题吧,对接其他应用端也这样吗?还是只有lgr这样?

2mf8 avatar Aug 12 '24 12:08 2mf8

这是NB的问题吧,对接其他应用端也这样吗?还是只有lgr这样?

可以看补充说明,napcatqq并没有这个问题

shoucandanghehe avatar Aug 12 '24 12:08 shoucandanghehe

out.mp4

这是NB的问题吧,对接其他应用端也这样吗?还是只有lgr这样?

试试Go-Lagrange-client

2mf8 avatar Aug 12 '24 12:08 2mf8

试试Go-Lagrange-client

Go-Lagrange-client怎么配正向ws(

shoucandanghehe avatar Aug 12 '24 12:08 shoucandanghehe

试试Go-Lagrange-client

Go-Lagrange-client怎么配正向ws(

启动后自动启动正向,有地址

2mf8 avatar Aug 12 '24 12:08 2mf8

试试Go-Lagrange-client

Go-Lagrange-client怎么配正向ws(

启动后自动启动正向,有地址

地址在日志里

2mf8 avatar Aug 12 '24 12:08 2mf8

试试Go-Lagrange-client

@2mf8 https://github.com/2mf8/Go-Lagrange-Client/issues/21

shoucandanghehe avatar Aug 12 '24 13:08 shoucandanghehe

Linux 下无法复现 001e93ef3ca6216b225de9de7a35343a

Windows 待测

DarkRRb avatar Aug 12 '24 13:08 DarkRRb

~~看nb日志输出的时间是正常的,可能是有东西卡住了日志打印到控制台,不是nb本身卡住~~ 看错了

yanyongyu avatar Aug 12 '24 13:08 yanyongyu

试了一下aiohttp作为nb的WebSocket驱动,正常 所以是websockets的问题?

shoucandanghehe avatar Aug 12 '24 13:08 shoucandanghehe

windows 下也没有复现成功 image

DarkRRb avatar Aug 12 '24 13:08 DarkRRb

@CwkDark 根据websockets日志看大概是tcp连接没有正确关闭 image

shoucandanghehe avatar Aug 12 '24 14:08 shoucandanghehe

成功复现, 目前是仅在 Linux 上出现, 问题排查中

DarkRRb avatar Aug 12 '24 16:08 DarkRRb