Задать вопрос
dmc1989
@dmc1989

Как правильно передать socketIo в express?

Ну никак не получается передать. Что я делаю не так? Заранее спасибо

server.js
var app = require('./express')();
var http = require('http');
var server = http.createServer(app);
var port = process.env.PORT || 5000;

// use web sockets
var io = require('./socket/index')(server);

app.set('socketIo', io);

// get all routes
require('./routes/index')(app);

server.listen(port, function() {
    console.log("Server work on port: " + port + "...");
});


logout.js
module.exports.get = function(req, res) { 
    
    var userId = req.user._id;
    var socketIo = req.app.get('socketIo'); // undefined
    
    socketIo.sockets.to(userId).broadcast.emit('user:logout');
    // Cannot read property 'sockets' of undefined
}
  • Вопрос задан
  • 500 просмотров
Подписаться 2 Оценить Комментировать
Решения вопроса 1
dmc1989
@dmc1989 Автор вопроса
Вот решение:

socket/index.js
module.exports = function(server) {
    io = socketio.listen(server);
    
    // do something with io...
    
    return io;
}
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
dummyman
@dummyman
диссидент-схизматик
есть доступный повсеместно app.locals и res.locals, который формируется по каждой паре запрос-ответ
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы