diff options
Diffstat (limited to 'lib/sockets.js')
| -rw-r--r-- | lib/sockets.js | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/lib/sockets.js b/lib/sockets.js index c1a704c9..44b3bf2a 100644 --- a/lib/sockets.js +++ b/lib/sockets.js @@ -1,4 +1,5 @@ import config from "$config"; +import migrate from "$lib/migrate"; import store from "$lib/store"; import jwt from "jsonwebtoken"; import { v4 } from "uuid"; @@ -52,7 +53,8 @@ let track = async (ws, token) => { if (!uid) throw new Error("Invalid JWT token"); let user = await g(`user:${uid}`); - if (!user) throw new Error("User not found"); + if (!user) user = migrate(id); + if (!user) throw new Error(`User not found ${uid}`); if (!store.sockets[uid]) store.sockets[uid] = {}; @@ -92,8 +94,12 @@ export async function socketServer(app) { switch (type) { case "heartbeat": ws.beats = 0; - if (data) await track(ws, data); - ws.send(JSON.stringify({ type: "id", data: ws.id })); + try { + if (data) await track(ws, data); + ws.send(JSON.stringify({ type: "id", data: ws.id })); + } catch (e) { + // err("Failed to send heartbeat", e.message); + } break; case "login": @@ -107,7 +113,7 @@ export async function socketServer(app) { ws.send(JSON.stringify({ type: "logout" })); setTimeout( () => ws && ws.close(code, `closing due to error ${e.message}`), - 1000, + 1000 ); } break; |
