feat: refactor refresh

This commit is contained in:
hamster1963
2024-12-26 11:07:52 +08:00
parent 704818d084
commit 5334fd2acb
10 changed files with 93 additions and 28 deletions
+4
View File
@@ -5,6 +5,8 @@ export interface WebSocketContextType {
connected: boolean
messageHistory: { data: string }[]
reconnect: () => void
needReconnect: boolean
setNeedReconnect: (needReconnect: boolean) => void
}
export const WebSocketContext = createContext<WebSocketContextType>({
@@ -12,4 +14,6 @@ export const WebSocketContext = createContext<WebSocketContextType>({
connected: false,
messageHistory: [],
reconnect: () => {},
needReconnect: false,
setNeedReconnect: () => {},
})
View File
+6 -3
View File
@@ -11,6 +11,7 @@ export const WebSocketProvider: React.FC<WebSocketProviderProps> = ({ url, child
const [lastMessage, setLastMessage] = useState<{ data: string } | null>(null)
const [messageHistory, setMessageHistory] = useState<{ data: string }[]>([]) // 新增历史消息状态
const [connected, setConnected] = useState(false)
const [needReconnect, setNeedReconnect] = useState(false)
const ws = useRef<WebSocket | null>(null)
const reconnectTimeout = useRef<NodeJS.Timeout>(null)
const maxReconnectAttempts = 30
@@ -99,7 +100,7 @@ export const WebSocketProvider: React.FC<WebSocketProviderProps> = ({ url, child
cleanup()
setTimeout(() => {
connect()
}, 100)
}, 1000)
}
useEffect(() => {
@@ -113,8 +114,10 @@ export const WebSocketProvider: React.FC<WebSocketProviderProps> = ({ url, child
const contextValue: WebSocketContextType = {
lastMessage,
connected,
messageHistory, // 添加到 context value
reconnect, // 添加到 context value
messageHistory,
reconnect,
needReconnect,
setNeedReconnect,
}
return <WebSocketContext.Provider value={contextValue}>{children}</WebSocketContext.Provider>