fix: Make webhooks functional in production mode, remove duplicate functions
This commit is contained in:
parent
5c9fb0f842
commit
794b18bd6d
@ -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"
|
||||
}
|
||||
}
|
||||
|
@ -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');
|
||||
});
|
@ -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);
|
||||
|
20
src/lib/websocketConfig.ts
Normal file
20
src/lib/websocketConfig.ts
Normal 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})`);
|
||||
});
|
||||
});
|
||||
}
|
@ -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} */
|
||||
|
@ -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);
|
||||
}
|
||||
},
|
||||
]
|
||||
|
Loading…
Reference in New Issue
Block a user