fix: Make webhooks functional in production mode, remove duplicate functions

This commit is contained in:
April Hall 2025-01-04 16:20:36 -05:00
parent 5c9fb0f842
commit 794b18bd6d
Signed by: arithefirst
GPG Key ID: 4508A15C4DB91C5B
7 changed files with 58 additions and 46 deletions

BIN
bun.lockb

Binary file not shown.

View File

@ -7,6 +7,7 @@
"dev": "vite dev",
"build": "vite build",
"preview": "vite preview",
"start": "PORT=3005 tsm ./prodServer.ts",
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
"format": "prettier --write .",
@ -16,7 +17,7 @@
},
"devDependencies": {
"@eslint/compat": "^1.2.3",
"@sveltejs/adapter-auto": "^3.0.0",
"@sveltejs/adapter-node": "^5.2.11",
"@sveltejs/kit": "^2.0.0",
"@sveltejs/vite-plugin-svelte": "^4.0.0",
"autoprefixer": "^10.4.20",
@ -38,8 +39,10 @@
"dependencies": {
"daisyui": "^4.12.23",
"drizzle-orm": "^0.33.0",
"express": "^4.21.2",
"postgres": "^3.4.4",
"socket.io": "^4.8.1",
"socket.io-client": "^4.8.1"
"socket.io-client": "^4.8.1",
"tsm": "^2.3.0"
}
}

View File

@ -1,11 +1,30 @@
import * as path from 'path';
import * as url from 'url';
import { createWSSGlobalInstance, onHttpServerUpgrade } from './src/lib/server/webSocketUtils';
import { handler } from './build/handler.js';
import express from 'express';
import { createServer } from 'http';
import { Server } from 'socket.io';
const __filename = url.fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);
const app = express();
const server = createServer(app);
const io = new Server(server);
createWSSGlobalInstance();
io.on('connection', (socket) => {
console.log(`[ws:kit] client connected (${socket.id})`);
io!.emit('message', `Hello from SvelteKit ${new Date().toLocaleString()} (${socket.id})`);
const { server } = await import(path.resolve(__dirname, './build/index.js'));
server.server.on('upgrade', onHttpServerUpgrade);
socket.on('disconnect', () => {
io!.emit('message', `[ws:kit] client disconnected (${socket.id})`)
console.log(`client disconnected (${socket.id})`);
});
});
app.use((req, res, next) => {
if (req.path.startsWith('/socket.io/')) {
next();
} else {
handler(req, res);
}
});
server.listen(3005, () => {
console.log('Listening on http://0.0.0.0:3005');
});

View File

@ -1,24 +1,9 @@
import { building } from '$app/environment';
import type { Handle } from '@sveltejs/kit';
import { Server as SocketIOServer } from 'socket.io';
import type { HttpServer } from 'vite';
import { startupSocketIOServer } from '$lib/websocketConfig';
let io: SocketIOServer | undefined;
const startupSocketIOServer = (httpServer: HttpServer | null) => {
if (io) return;
console.log('[ws:kit] setup');
io = new SocketIOServer(httpServer);
io.on('connection', (socket) => {
console.log(`[ws:kit] client connected (${socket.id})`);
socket.emit('message', `Hello from SvelteKit ${new Date().toLocaleString()} (${socket.id})`);
socket.on('disconnect', () => {
console.log(`[ws:kit] client disconnected (${socket.id})`);
});
});
};
export const handle = (async ({ event, resolve }) => {
if (!building) {
startupSocketIOServer(event.locals.httpServer);

View File

@ -0,0 +1,20 @@
import { Server as SocketIOServer } from 'socket.io';
import type { HttpServer } from 'vite';
let io: SocketIOServer | undefined;
export function startupSocketIOServer(httpServer: HttpServer | null) {
if (io) return;
console.log('[ws:kit] setup');
io = new SocketIOServer(httpServer);
io.on('connection', (socket) => {
console.log(`[ws:kit] client connected (${socket.id})`);
io!.emit('message', `Hello from SvelteKit ${new Date().toLocaleString()} (${socket.id})`);
socket.on('disconnect', () => {
io!.emit('message', `[ws:kit] client disconnected (${socket.id})`)
console.log(`client disconnected (${socket.id})`);
});
});
}

View File

@ -1,4 +1,4 @@
import adapter from '@sveltejs/adapter-auto';
import adapter from '@sveltejs/adapter-node';
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
/** @type {import('@sveltejs/kit').Config} */

View File

@ -1,21 +1,6 @@
import { sveltekit } from '@sveltejs/kit/vite';
import { defineConfig, type HttpServer } from 'vite';
import { Server as SocketIOServer } from 'socket.io';
function setupSocketIOServer(httpServer: HttpServer | null) {
if (!httpServer) {
throw new Error('HTTP server is not available');
}
const io = new SocketIOServer(httpServer);
io.on('connection', (socket) => {
console.log(`[ws] client connected (${socket.id})`);
io.emit('message', `Hello from SvelteKit ${new Date().toLocaleString()} (${socket.id})`);
socket.on('disconnect', () => {
io.emit(`[ws] client disconnected (${socket.id})`);
});
});
}
import { defineConfig } from 'vite';
import { startupSocketIOServer } from './src/lib/websocketConfig';
export default defineConfig({
plugins: [
@ -23,10 +8,10 @@ export default defineConfig({
{
name: 'integratedSocketIOServer',
configureServer(server) {
setupSocketIOServer(server.httpServer);
startupSocketIOServer(server.httpServer);
},
configurePreviewServer(server) {
setupSocketIOServer(server.httpServer);
startupSocketIOServer(server.httpServer);
}
},
]