fix: 捕获钉钉 Stream SDK 内部 panic,避免崩溃

钉钉 SDK v0.9.1 在连接断开时有 send on closed channel panic,
加 defer recover 捕获后自动重连。

Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
2026-06-07 00:41:13 +08:00
parent c01712ee6a
commit 9731bff268
+10 -3
View File
@@ -181,9 +181,16 @@ func (p *Platform) Start(handler core.MessageHandler) error {
default:
}
if err := p.streamClient.Start(ctx); err != nil {
slog.Warn("dingtalk: stream disconnected, reconnecting", "error", err)
}
func() {
defer func() {
if r := recover(); r != nil {
slog.Error("dingtalk: stream panic, reconnecting", "recover", r)
}
}()
if err := p.streamClient.Start(ctx); err != nil {
slog.Warn("dingtalk: stream disconnected, reconnecting", "error", err)
}
}()
// Brief pause before reconnecting to avoid tight loop on persistent failures.
select {