fix: guest login not work sometimes
This commit is contained in:
@@ -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
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -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;
|
||||||
};
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user