fix: try to fix notification and auto kickout sometimes

This commit is contained in:
Tristan Yang
2022-10-20 14:21:12 +08:00
parent 46e6950c18
commit 18a4d945b7
3 changed files with 16 additions and 9 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
{ {
"name": "vocechat-web", "name": "vocechat-web",
"version": "0.3.9", "version": "0.3.11",
"private": true, "private": true,
"homepage": "https://voce.chat", "homepage": "https://voce.chat",
"dependencies": { "dependencies": {
+6 -4
View File
@@ -25,14 +25,16 @@ const Notification = () => {
}, [token]); }, [token]);
useEffect(() => { useEffect(() => {
const handleServiceworkerMessage = (event: MessageEvent) => { const handleServiceWorkerMessage = (event: MessageEvent) => {
const { newPath } = event.data; const { newPath } = event.data;
navigateTo(newPath); if (newPath) {
navigateTo(newPath);
}
}; };
// https only // https only
navigator.serviceWorker?.addEventListener("message", handleServiceworkerMessage); navigator.serviceWorker?.addEventListener("message", handleServiceWorkerMessage);
return () => { return () => {
navigator.serviceWorker?.removeEventListener("message", handleServiceworkerMessage); navigator.serviceWorker?.removeEventListener("message", handleServiceWorkerMessage);
}; };
}, []); }, []);
+9 -4
View File
@@ -22,9 +22,9 @@ import chatMessageHandler from "./chat.handler";
import store, { useAppDispatch, useAppSelector } from "../../../app/store"; import store, { useAppDispatch, useAppSelector } from "../../../app/store";
import { ServerEvent, UsersStateEvent } from "../../../types/sse"; import { ServerEvent, UsersStateEvent } from "../../../types/sse";
class RetriableError extends Error {} class RetryError extends Error { }
class FatalError extends Error {} class FatalError extends Error { }
const getQueryString = (params: { [key: string]: string }) => { const getQueryString = (params: { [key: string]: string }) => {
const sp = new URLSearchParams(); const sp = new URLSearchParams();
@@ -67,6 +67,11 @@ export default function useStreaming() {
} = { } = {
"api-key": token "api-key": token
}; };
// token 非空
if (!token) {
initializing = false;
return;
}
// 如果afterMid是0,则不传该参数 // 如果afterMid是0,则不传该参数
if (afterMid !== 0) { if (afterMid !== 0) {
params.after_mid = `${afterMid}`; params.after_mid = `${afterMid}`;
@@ -92,7 +97,7 @@ export default function useStreaming() {
} else { } else {
// server error // server error
console.info("sse debug: open retry"); console.info("sse debug: open retry");
throw new RetriableError(); throw new RetryError();
} }
}, },
onmessage(evt) { onmessage(evt) {
@@ -274,7 +279,7 @@ export default function useStreaming() {
// if the server closes the connection unexpectedly, retry: // if the server closes the connection unexpectedly, retry:
console.info("sse debug: closed"); console.info("sse debug: closed");
initializing = false; initializing = false;
throw new RetriableError(); throw new RetryError();
}, },
onerror(err) { onerror(err) {
initializing = false; initializing = false;