I'm making a game app, so I have something like a socket-server.ts:
import http from 'http';
import { GetSession } from '@/actions/session';
const server = http.createServer((req, res) => {
res.end('Hello World!');
});
interface CustomSocket extends Socket {
sessionKey?: string;
}
const sessionData: Record<string, any> = {};
const io = new Server(server, {
cors: {
origin: '*',
methods: ['GET', 'POST'],
credentials: true,
},
});
io.on('connection', (socket: CustomSocket) => {
console.log('a user connected');
socket.on('setSessionKey', async (sessionKey) => {
socket.sessionKey = sessionKey;
if (!sessionData[sessionKey]) {
sessionData[sessionKey] = {};
}
const dbSession = await GetSession(sessionKey);
console.log(dbSession)
socket.emit('sessionData', dbSession);
console.log(`Session key set: ${sessionKey}`);
});
socket.on('sendData', (data) => {
const sessionKey = socket.sessionKey;
if (sessionKey) {
sessionData[sessionKey] = data;
console.log(`Data received for session ${sessionKey}:`, data);
} else {
console.log('No session key set for this socket.');
}
});
socket.on('disconnect', () => {
console.log('user disconnected');
});
});
server.listen(3001, () => {
console.log('listening on *:3001');
});
However I'm deploying the app to Vercel, and I can't run this in the deployment afaik. What solutions are available?