Skip to content
GitLab
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Sign in / Register
Toggle navigation
Menu
Open sidebar
水玉婷
ai-wechat
Commits
85a6b6c0
Commit
85a6b6c0
authored
Dec 25, 2025
by
水玉婷
Browse files
feat:重连机制
parent
12632982
Changes
1
Hide whitespace changes
Inline
Side-by-side
src/views/components/utils/sseService.ts
View file @
85a6b6c0
...
...
@@ -118,10 +118,7 @@ export class SSEService {
this
.
closeSSE
();
// 检测服务器不可用情况
const
isServerUnavailable
=
error
&&
(
error
.
type
===
'
error
'
||
(
error
.
target
&&
error
.
target
.
readyState
===
0
)
||
(
error
.
message
&&
error
.
message
.
includes
(
'
CONNECTION_REFUSED
'
)));
const
isServerUnavailable
=
this
.
isServerUnavailableError
(
error
);
if
(
isServerUnavailable
)
{
console
.
error
(
'
⛔ 服务器不可用,停止重连
'
);
...
...
@@ -231,26 +228,50 @@ export class SSEService {
// 判断是否为服务器不可用错误
private
isServerUnavailableError
(
error
:
any
):
boolean
{
// 检查错误类型和消息,判断是否为真正的服务器不可用
const
errorMessage
=
error
?.
message
||
''
;
const
errorType
=
error
?.
type
||
''
;
if
(
!
error
)
return
false
;
// 服务器不可用的典型特征:
// 检查错误消息
const
errorMessage
=
String
(
error
.
message
||
''
).
toLowerCase
();
const
errorString
=
String
(
error
).
toLowerCase
();
// 检查错误目标的状态
const
errorTarget
=
error
.
target
||
error
;
const
readyState
=
errorTarget
.
readyState
;
// 服务器不可用的明确特征:
// 1. 连接被拒绝 (net::ERR_CONNECTION_REFUSED)
// 2. 服务器返回5xx错误
// 3.
连接超时但网络正常
const
isConnectionRefused
=
errorMessage
.
includes
(
'
CONNECTION_REFUSED
'
)
||
// 3.
明确的连接失败消息
const
isConnectionRefused
=
errorMessage
.
includes
(
'
connection_refused
'
)
||
errorMessage
.
includes
(
'
connection refused
'
)
||
errorMessage
.
includes
(
'
Failed to fetch
'
);
errorMessage
.
includes
(
'
failed to fetch
'
)
||
errorString
.
includes
(
'
connection_refused
'
)
||
errorString
.
includes
(
'
connection refused
'
);
const
isServerError
=
errorMessage
.
includes
(
'
500
'
)
||
errorMessage
.
includes
(
'
502
'
)
||
errorMessage
.
includes
(
'
503
'
)
||
errorMessage
.
includes
(
'
504
'
);
errorMessage
.
includes
(
'
504
'
)
||
errorString
.
includes
(
'
500
'
)
||
errorString
.
includes
(
'
502
'
)
||
errorString
.
includes
(
'
503
'
)
||
errorString
.
includes
(
'
504
'
);
// 只有当明确是服务器不可用时才停止重连
// 避免将正常的网络波动误判为服务器不可用
return
isConnectionRefused
||
isServerError
;
const
isUnavailable
=
isConnectionRefused
||
isServerError
;
if
(
isUnavailable
)
{
console
.
log
(
'
🔍 检测到服务器不可用错误:
'
,
{
message
:
errorMessage
,
string
:
errorString
,
readyState
:
readyState
,
isConnectionRefused
,
isServerError
});
}
return
isUnavailable
;
}
...
...
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment