server.js
const sessionMiddleware = session({
resave: false,
saveUninitialized: false,
secret: process.env.COOKIE_SECRET,
cookie: {
httpOnly: true,
secure: false
}
});
app.use(sessionMiddleware);
io.js
const {Server} = require('socket.io');
module.exports = (server, app, sessionMiddleware) => {
const io = new Server(server, {
path: '/socket.io',
cors: {
origin: '*',
credentials: true
}
});
const namespace = io.of('/namespace');
app.set('io', io);
io.use((socket, next) => {
sessionMiddleware(socket.request, socket.request.res || {}, next);
});
namespace.on('connect', (socket) => {
console.log('user connected');
socket.join(room);
socket.on('event-name', (data) => {
namespace.to(room).emit('event-name', { data });
});
socket.on('disconnect', () => console.log('user disconnected'));
});
return io;
}
router.js
const express = require('express');
const router = express.Router();
router.get('/', (req, res, next) => {
req.app.get('io').of('/namespace').to(room).emit('event-name', {});
});
module.exports = router;