import {createServer} from "http"; import {Server} from "socket.io"; import { createAdapter } from "@socket.io/redis-adapter"; import {redis, redisSubscriber} from "./cache.js"; import {fileURLToPath} from "url"; import path from "path"; import express from "express"; import {engine} from "express-handlebars"; import {initSnapShare} from "./snapshare.js"; import cors from "cors"; const socketIoOptions = { } if( process.env.DEXORDER_APP_URL ) socketIoOptions['cors'] = {origin:process.env.DEXORDER_APP_URL} // Setup Express const __filename = fileURLToPath(import.meta.url); const __dirname = path.dirname(__filename); const app = express(); app.engine('handlebars', engine({ defaultLayout: false, } )); app.set('view engine', 'handlebars'); app.set('views', path.join(__dirname, 'views')); // Set the views directory app.use(express.static(path.join(__dirname, 'public'))); app.use(cors()) app.use((err, req, res, next) => { console.error(err.stack); res.status(500).send('Something went wrong!'); }); initSnapShare(app) export const httpServer = createServer(app) export const io = new Server(httpServer, socketIoOptions) const adapter = createAdapter(redis, redisSubscriber, {/*key:'socket.io'*/}) io.adapter(adapter)