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",
|
"dev": "vite dev",
|
||||||
"build": "vite build",
|
"build": "vite build",
|
||||||
"preview": "vite preview",
|
"preview": "vite preview",
|
||||||
|
"start": "PORT=3005 tsm ./prodServer.ts",
|
||||||
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
||||||
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
||||||
"format": "prettier --write .",
|
"format": "prettier --write .",
|
||||||
@ -16,7 +17,7 @@
|
|||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@eslint/compat": "^1.2.3",
|
"@eslint/compat": "^1.2.3",
|
||||||
"@sveltejs/adapter-auto": "^3.0.0",
|
"@sveltejs/adapter-node": "^5.2.11",
|
||||||
"@sveltejs/kit": "^2.0.0",
|
"@sveltejs/kit": "^2.0.0",
|
||||||
"@sveltejs/vite-plugin-svelte": "^4.0.0",
|
"@sveltejs/vite-plugin-svelte": "^4.0.0",
|
||||||
"autoprefixer": "^10.4.20",
|
"autoprefixer": "^10.4.20",
|
||||||
@ -38,8 +39,10 @@
|
|||||||
"dependencies": {
|
"dependencies": {
|
||||||
"daisyui": "^4.12.23",
|
"daisyui": "^4.12.23",
|
||||||
"drizzle-orm": "^0.33.0",
|
"drizzle-orm": "^0.33.0",
|
||||||
|
"express": "^4.21.2",
|
||||||
"postgres": "^3.4.4",
|
"postgres": "^3.4.4",
|
||||||
"socket.io": "^4.8.1",
|
"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 { handler } from './build/handler.js';
|
||||||
import * as url from 'url';
|
import express from 'express';
|
||||||
import { createWSSGlobalInstance, onHttpServerUpgrade } from './src/lib/server/webSocketUtils';
|
import { createServer } from 'http';
|
||||||
|
import { Server } from 'socket.io';
|
||||||
|
|
||||||
const __filename = url.fileURLToPath(import.meta.url);
|
const app = express();
|
||||||
const __dirname = path.dirname(__filename);
|
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'));
|
socket.on('disconnect', () => {
|
||||||
server.server.on('upgrade', onHttpServerUpgrade);
|
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 { building } from '$app/environment';
|
||||||
import type { Handle } from '@sveltejs/kit';
|
import type { Handle } from '@sveltejs/kit';
|
||||||
import { Server as SocketIOServer } from 'socket.io';
|
import { Server as SocketIOServer } from 'socket.io';
|
||||||
import type { HttpServer } from 'vite';
|
import { startupSocketIOServer } from '$lib/websocketConfig';
|
||||||
|
|
||||||
let io: SocketIOServer | undefined;
|
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 }) => {
|
export const handle = (async ({ event, resolve }) => {
|
||||||
if (!building) {
|
if (!building) {
|
||||||
startupSocketIOServer(event.locals.httpServer);
|
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';
|
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
|
||||||
|
|
||||||
/** @type {import('@sveltejs/kit').Config} */
|
/** @type {import('@sveltejs/kit').Config} */
|
||||||
|
@ -1,21 +1,6 @@
|
|||||||
import { sveltekit } from '@sveltejs/kit/vite';
|
import { sveltekit } from '@sveltejs/kit/vite';
|
||||||
import { defineConfig, type HttpServer } from 'vite';
|
import { defineConfig } from 'vite';
|
||||||
import { Server as SocketIOServer } from 'socket.io';
|
import { startupSocketIOServer } from './src/lib/websocketConfig';
|
||||||
|
|
||||||
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})`);
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
plugins: [
|
plugins: [
|
||||||
@ -23,10 +8,10 @@ export default defineConfig({
|
|||||||
{
|
{
|
||||||
name: 'integratedSocketIOServer',
|
name: 'integratedSocketIOServer',
|
||||||
configureServer(server) {
|
configureServer(server) {
|
||||||
setupSocketIOServer(server.httpServer);
|
startupSocketIOServer(server.httpServer);
|
||||||
},
|
},
|
||||||
configurePreviewServer(server) {
|
configurePreviewServer(server) {
|
||||||
setupSocketIOServer(server.httpServer);
|
startupSocketIOServer(server.httpServer);
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
Loading…
Reference in New Issue
Block a user