2026.4.0-beta.0 #12

Merged
last2014 merged 11 commits from develop into main 2026-05-03 05:28:47 +00:00
3 changed files with 50 additions and 30 deletions
Showing only changes of commit d61fc56a38 - Show all commits
+2
View File
@@ -12,6 +12,8 @@ earthquake:
# 過去のデバッグ用データを使用して地震情報を配信するかどうか boolean # 過去のデバッグ用データを使用して地震情報を配信するかどうか boolean
# デバッグ用途のみで使用してください。 # デバッグ用途のみで使用してください。
useHistoryData: false useHistoryData: false
# 再接続の間隔(ミリ秒) number
reconnectInterval: 3000
uwuzu: uwuzu:
# APIトークン string # APIトークン string
# とくに理由がない限り、全権限を与えてください。 # とくに理由がない限り、全権限を与えてください。
+19 -2
View File
@@ -21,6 +21,7 @@ if (config.earthquake?.useHistoryData) {
i++; i++;
}, 10 * 1000); }, 10 * 1000);
} else { } else {
const connect = () => {
const WEBSOCKET_URL = config.debug const WEBSOCKET_URL = config.debug
? "wss://api-realtime-sandbox.p2pquake.net/v2/ws" ? "wss://api-realtime-sandbox.p2pquake.net/v2/ws"
: "wss://api.p2pquake.net/v2/ws"; : "wss://api.p2pquake.net/v2/ws";
@@ -32,6 +33,19 @@ if (config.earthquake?.useHistoryData) {
console.log("P2P地震情報のWebSocketに接続しました"); console.log("P2P地震情報のWebSocketに接続しました");
}); });
socket.addEventListener("close", (err) => {
const interval = config.earthquake.reconnectInterval;
console.log(`WebSocketが切断されました。${interval / 1000}秒後に再接続します:`, err.reason);
setTimeout(() => {
connect();
}, interval);
});
socket.addEventListener("error", (err) => {
console.error("WebSocketでエラーが発生しました:", err);
socket.close();
});
socket.addEventListener("message", async (event) => { socket.addEventListener("message", async (event) => {
let message; let message;
@@ -40,14 +54,14 @@ if (config.earthquake?.useHistoryData) {
? JSON.parse(event.data) ? JSON.parse(event.data)
: event.data; : event.data;
} catch (err) { } catch (err) {
console.error(`地震情報メッセージのパースでエラーが発生: ${err}`); console.error("地震情報メッセージのパースでエラーが発生:", err);
return; return;
} }
const id = message.id ?? message._id; const id = message.id ?? message._id;
const mem = Memory.memory; const mem = Memory.memory;
if (mem.processedInfo.includes(id) && !config.debug) { if (mem.processedInfo.includes(id) && !config.debug) {
console.log("重複した地震情報: ", message.id); console.log("重複した地震情報:", message.id);
return; return;
} }
@@ -58,6 +72,9 @@ if (config.earthquake?.useHistoryData) {
Memory.memory = mem; Memory.memory = mem;
} }
}); });
}
connect();
} }
const processMessage = async (message: any) => { const processMessage = async (message: any) => {
+1
View File
@@ -21,6 +21,7 @@ const schema = z.object({
]), ]),
canUnknownMaxScale: z.boolean(), canUnknownMaxScale: z.boolean(),
useHistoryData: z.boolean(), useHistoryData: z.boolean(),
reconnectInterval: z.number().positive(),
}), }),
uwuzu: z.object({ uwuzu: z.object({
token: z.string().length(64), token: z.string().length(64),