diff --git a/server/server-route.ts b/server/server-route.ts index 507d6c9..e50457d 100755 --- a/server/server-route.ts +++ b/server/server-route.ts @@ -84,7 +84,7 @@ export const useServerRouter = >( try { params = await req.json(); } catch (e) {} - result = await route.handler.default.bind(arg)(...params); + result = await route.handler.default.bind(arg)(params); } if (typeof result === "object" && result instanceof Response) { diff --git a/session/client-session.ts b/session/client-session.ts index 6a06951..c6504f8 100755 --- a/session/client-session.ts +++ b/session/client-session.ts @@ -21,106 +21,9 @@ export const newClientSession = (arg?: { const session: ClientSession = { status: "checking", - wsid: "", current: null, connected: false, - get connectURL() { - const url = new URL(location.href); - url.protocol = "wss:"; - url.hash = ""; - return url; - }, - connect(auth?: SessionAuth) { - return new Promise(async (done, reject) => { - const current = this.current; - if (current || auth) { - if (this.ws) { - await wsReady(this.ws); - } - - const ws = new WebSocket(this.connectURL); - this.ws = ws; - ws.onclose = () => { - session.connected = false; - console.log(this.status); - if (this.status === "logout") { - store.clear(); - this.current = null; - if (arg?.on?.afterLogout) { - arg.on.afterLogout(session); - } - logout_promise.resolve(); - logout_promise.resolve = null; - logout_promise.reject = null; - } else { - setTimeout(() => { - console.warn("Reconnecting Session WS..."); - this.connect(); - }, 2000); - } - }; - ws.onopen = () => { - if (session.current) { - ws.send( - JSON.stringify({ - uid: session.current.uid, - sid: session.current.sid, - }) - ); - } else { - if (auth) { - ws.send(JSON.stringify(auth)); - } else { - if (ws.readyState === ws.OPEN) { - ws.close(); - } - } - } - }; - ws.onmessage = async (m) => { - if (!session.connected) { - try { - const parsed = JSON.parse(m.data) as - | { - status: "ok"; - wsid: string; - session: SessionData; - } - | { status: "failed" }; - - if (parsed.status === "ok") { - session.wsid = parsed.wsid; - session.current = parsed.session; - if (login_promise.resolve) { - session.connected = true; - login_promise.resolve(session.current); - await store.save(session.current); - } - } else { - if (login_promise.reject) login_promise.reject(); - } - login_promise.resolve = null; - login_promise.reject = null; - if (arg?.on?.afterLogin) { - arg.on.afterLogin(session); - } - done(); - - return; - } catch (e) { - reject(e); - } - - if (ws.readyState === ws.OPEN) { - ws.close(); - } - } - }; - } else { - done(); - } - }); - }, + async connect(auth) {}, async init() { const current = await store.load(); if (!current) { @@ -190,12 +93,6 @@ Login is prevented, please logout first before re-login!` logout_promise.resolve = resolve; logout_promise.reject = reject; - if (this.status === "active" && this.ws) { - await wsReady(this.ws); - this.status = "logout"; - - this.ws.send(JSON.stringify({ action: "logout" })); - } }); }, }; diff --git a/session/router/router.ts b/session/router/router.ts index 3d2665e..61524d3 100755 --- a/session/router/router.ts +++ b/session/router/router.ts @@ -2,7 +2,6 @@ import { newServerRouter } from "lib/server/server-route"; export const sessionRouter = newServerRouter({ check: ["/_session/check", () => import("./session-check")], - login: ["/_session/login", () => import("./session-login")], logout: ["/_session/logout", () => import("./session-logout")], track: ["/_session/track", () => import("./session-track")], }); diff --git a/session/router/session-login.ts b/session/router/session-login.ts deleted file mode 100755 index d77d5af..0000000 --- a/session/router/session-login.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { EsensiSession } from "app/server/session"; -import { sessionContext } from "lib/server/context"; -import { ClientSessionStatus, SessionAuth } from "../type"; - -export default async function (this: any, arg: SessionAuth) { - const ctx = sessionContext(this); - // let result = "invalid" as ClientSessionStatus; - // const session = ctx.session.findFirst({ uid, sid }); - // if (session) { - // if (!session.expired_at || session.expired_at > Date.now()) { - // result = "active"; - // } else { - // result = "expired"; - // } - // } - - return { status: "ok" }; -} diff --git a/session/server-session.ts b/session/server-session.ts index 60d9606..2276631 100755 --- a/session/server-session.ts +++ b/session/server-session.ts @@ -22,10 +22,6 @@ export const initSessionServer = ( arg: { encrypt?: boolean; router?: ReturnType; - login: ( - session: SessionStore, - arg: SessionAuth - ) => Promise | false>; } ) => { try { @@ -33,7 +29,7 @@ export const initSessionServer = ( const session_router = useServerRouter(sessionRouter); const server_handler: SessionServerHandler = { async cleanup() {}, - + async handle(server_arg) { const { req, handle, url } = server_arg; diff --git a/session/type.ts b/session/type.ts index 2cc6c73..8d9d6a0 100755 --- a/session/type.ts +++ b/session/type.ts @@ -53,9 +53,6 @@ export type ClientSessionStatus = export type ClientSession = { status: ClientSessionStatus; current: null | SessionData; - wsid: string; - connectURL: URL; - ws?: WebSocket; init(): Promise<{ status: ClientSessionStatus }>; connect(auth?: SessionAuth): Promise; connected: boolean; @@ -81,4 +78,4 @@ export type SessionAuth = { method: "user-pass"; username: string; password: string; -}; +} & Record;