Reputation: 25
Hello guys i have a strange problem
in chatController.js
var io = socketIO(server)
and server exported from index.js
const server = http.createServer(app);
server.listen(config.port,()=> console.log(`Listening on port ${ config.port }`))
module.exports = server
and in my routes
router.get('/' , chatController.index)
my controller class
class chatController extends controller {
index(req,res){
console.log('Request')
res.render('/')
io.on('connection' , (socket)=>{
console.log(socket.id)
})}
when i request to / for first time everythings ok but when i request for second time io.on function make 2 same socket for request
my Terminal log
i have three socket.id in third request can u help me ? thanks
Upvotes: 0
Views: 86
Reputation: 5148
Don't put
io.on('connection',(socket)=>{})
inside any request handler(controller);
You can use it in index.js.
const server = http.createServer(app);
var io = socketIO(server)
server.listen(config.port,()=> console.log(`Listening on port ${ config.port }`))
io.on('connection' , (socket)=>{
console.log(socket.id)
module.exports = server;
Or write module which is independent of any controller logic something like this:
// IOConnection.js
module.exports = function(io) {
io.on('connection' , (socket)=>{
console.log(socket.id)
})
}
var IOConnection = require('./IOConnection.js')
const server = http.createServer(app);
var io = socketIO(server);
IOConnection(io);
server.listen(config.port,()=> console.log(`Listening on port ${ config.port }`))
module.exports = server;
Upvotes: 1