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",
"version": "0.3.9",
"version": "0.3.11",
"private": true,
"homepage": "https://voce.chat",
"dependencies": {
+5 -3
View File
@@ -25,14 +25,16 @@ const Notification = () => {
}, [token]);
useEffect(() => {
const handleServiceworkerMessage = (event: MessageEvent) => {
const handleServiceWorkerMessage = (event: MessageEvent) => {
const { newPath } = event.data;
if (newPath) {
navigateTo(newPath);
}
};
// https only
navigator.serviceWorker?.addEventListener("message", handleServiceworkerMessage);
navigator.serviceWorker?.addEventListener("message", handleServiceWorkerMessage);
return () => {
navigator.serviceWorker?.removeEventListener("message", handleServiceworkerMessage);
navigator.serviceWorker?.removeEventListener("message", handleServiceWorkerMessage);
};
}, []);
+8 -3
View File
@@ -22,7 +22,7 @@ import chatMessageHandler from "./chat.handler";
import store, { useAppDispatch, useAppSelector } from "../../../app/store";
import { ServerEvent, UsersStateEvent } from "../../../types/sse";
class RetriableError extends Error {}
class RetryError extends Error { }
class FatalError extends Error { }
@@ -67,6 +67,11 @@ export default function useStreaming() {
} = {
"api-key": token
};
// token 非空
if (!token) {
initializing = false;
return;
}
// 如果afterMid是0,则不传该参数
if (afterMid !== 0) {
params.after_mid = `${afterMid}`;
@@ -92,7 +97,7 @@ export default function useStreaming() {
} else {
// server error
console.info("sse debug: open retry");
throw new RetriableError();
throw new RetryError();
}
},
onmessage(evt) {
@@ -274,7 +279,7 @@ export default function useStreaming() {
// if the server closes the connection unexpectedly, retry:
console.info("sse debug: closed");
initializing = false;
throw new RetriableError();
throw new RetryError();
},
onerror(err) {
initializing = false;