Files
server/io.js
2025-05-06 22:27:14 -04:00

43 lines
1.2 KiB
JavaScript

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)