fix: guest login not work sometimes

This commit is contained in:
Tristan Yang
2023-07-27 22:46:12 +08:00
parent 5a0842273b
commit 8d293abd1d
2 changed files with 14 additions and 18 deletions
+10 -16
View File
@@ -59,9 +59,9 @@ const getQueryString = (params: { [key: string]: string }) => {
let SSE: EventSource | undefined; let SSE: EventSource | undefined;
let ready = false; //是否已完成初始推送 let ready = false; //是否已完成初始推送
let aliveInter: number | ReturnType<typeof setTimeout> = 0; let aliveInter: number | ReturnType<typeof setTimeout> = 0;
export default function useStreaming() { export default function useStreaming() {
const [renewToken] = useRenewMutation(); const [renewToken] = useRenewMutation();
const [streamingReady, setStreamingReady] = useState(false);
const { const {
authData: { user, guest }, authData: { user, guest },
footprint: { afterMid, usersVersion, readUsers, readChannels } footprint: { afterMid, usersVersion, readUsers, readChannels }
@@ -81,7 +81,6 @@ export default function useStreaming() {
console.info("debug SSE: stopStreaming at timeout"); console.info("debug SSE: stopStreaming at timeout");
stopStreaming(); stopStreaming();
startStreaming(); startStreaming();
// }
}, countdown); }, countdown);
console.info("debug SSE: start new timeout", aliveInter); console.info("debug SSE: start new timeout", aliveInter);
}; };
@@ -141,13 +140,16 @@ export default function useStreaming() {
stopStreaming(); stopStreaming();
} }
const { readyState } = err.target as EventSource; const { readyState } = err.target as EventSource;
// 连接还处于开启状态
if (readyState === EventSource.OPEN || readyState === EventSource.CONNECTING) {
return;
}
console.info("sse error", readyState, err); console.info("sse error", readyState, err);
// 连接还处于开启状态 先停掉
if (readyState === EventSource.OPEN || readyState === EventSource.CONNECTING) {
stopStreaming();
// return;
}
// 重连 // 重连
keepAlive(2000); setTimeout(() => {
startStreaming();
}, 2000);
}; };
SSE.onmessage = (evt) => { SSE.onmessage = (evt) => {
// console.log("sse msg"); // console.log("sse msg");
@@ -415,7 +417,7 @@ export default function useStreaming() {
SSE.close(); SSE.close();
SSE = undefined; SSE = undefined;
} }
// connectionIsOpen = false; ready = false;
}; };
useEffect(() => { useEffect(() => {
const handleNetworkChange = () => { const handleNetworkChange = () => {
@@ -434,15 +436,7 @@ export default function useStreaming() {
}; };
}, []); }, []);
useEffect(() => {
// 确保只执行一次
if (streamingReady) {
startStreaming();
}
}, [streamingReady]);
return { return {
setStreamingReady,
startStreaming, startStreaming,
stopStreaming stopStreaming
}; };
+4 -2
View File
@@ -11,10 +11,12 @@ const GuestLogin = () => {
const [guestLogin] = useLazyGuestLoginQuery(); const [guestLogin] = useLazyGuestLoginQuery();
const { token, guest } = useAppSelector((store) => store.authData); const { token, guest } = useAppSelector((store) => store.authData);
useEffect(() => { useEffect(() => {
if (!guest) { if (!guest || !token) {
guestLogin(); guestLogin();
} }
}, [guest]); }, [guest, token]);
console.log("guest", token, guest);
if (token && guest) return <Navigate to={"/"} replace />; if (token && guest) return <Navigate to={"/"} replace />;
return null; return null;
}; };