fix
This commit is contained in:
parent
bfcbb0f7a8
commit
6cbbe90348
|
|
@ -0,0 +1,10 @@
|
||||||
|
import { WebSocketHandler } from "bun";
|
||||||
|
|
||||||
|
export const wsHandler: Record<string, WebSocketHandler<{ url: URL }>> = {
|
||||||
|
"/edit": {
|
||||||
|
open(ws) {},
|
||||||
|
message(ws, message) {},
|
||||||
|
close(ws, code, reason) {},
|
||||||
|
drain(ws) {},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
@ -1,18 +1,63 @@
|
||||||
import { createRouter } from "radix3";
|
import { createRouter } from "radix3";
|
||||||
|
import { wsHandler } from "../../../app/srv/ws/handler";
|
||||||
import { dir } from "../utils/dir";
|
import { dir } from "../utils/dir";
|
||||||
import { g } from "../utils/global";
|
import { g } from "../utils/global";
|
||||||
import { serveAPI } from "./serve-api";
|
import { serveAPI } from "./serve-api";
|
||||||
|
import { WebSocketHandler } from "bun";
|
||||||
|
|
||||||
const cache = { static: {} as Record<string, any> };
|
const cache = { static: {} as Record<string, any> };
|
||||||
|
|
||||||
export const createServer = async () => {
|
export const createServer = async () => {
|
||||||
g.api = {};
|
g.api = {};
|
||||||
g.router = createRouter({ strictTrailingSlash: true });
|
g.router = createRouter({ strictTrailingSlash: true });
|
||||||
g.server = Bun.serve({
|
g.server = Bun.serve({
|
||||||
port: g.port,
|
port: g.port,
|
||||||
async fetch(req) {
|
websocket: {
|
||||||
|
close(ws, code, reason) {
|
||||||
|
const pathname = ws.data.url.pathname;
|
||||||
|
if (wsHandler[pathname]) {
|
||||||
|
const close = wsHandler[pathname].close;
|
||||||
|
if (close) {
|
||||||
|
close(ws, code, reason);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
message(ws, message) {
|
||||||
|
const pathname = ws.data.url.pathname;
|
||||||
|
if (wsHandler[pathname]) {
|
||||||
|
const msg = wsHandler[pathname].message;
|
||||||
|
if (msg) {
|
||||||
|
msg(ws, message);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
open(ws) {
|
||||||
|
const pathname = ws.data.url.pathname;
|
||||||
|
if (wsHandler[pathname]) {
|
||||||
|
const open = wsHandler[pathname].open;
|
||||||
|
if (open) {
|
||||||
|
open(ws);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
} as WebSocketHandler<{ url: URL }>,
|
||||||
|
async fetch(req, server) {
|
||||||
if (g.status === "init") return new Response("initializing...");
|
if (g.status === "init") return new Response("initializing...");
|
||||||
const url = new URL(req.url);
|
const url = new URL(req.url);
|
||||||
|
|
||||||
|
if (wsHandler[url.pathname]) {
|
||||||
|
if (
|
||||||
|
server.upgrade(req, {
|
||||||
|
data: {
|
||||||
|
url: new URL(req.url),
|
||||||
|
},
|
||||||
|
})
|
||||||
|
) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
return new Response("Upgrade failed :(", { status: 500 });
|
||||||
|
}
|
||||||
|
|
||||||
try {
|
try {
|
||||||
const api = await serveAPI(url, req);
|
const api = await serveAPI(url, req);
|
||||||
if (api) {
|
if (api) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue