2016-02-04 3 views
1

Я хотел бы передать сообщение socket.io всем подключенным клиентам, когда любой клиент отправляет запрос на отправку. Как я могу держать сокет открытым, чтобы мои методы HTTP-запроса могли получить доступ к подключенному сокету.Отправка сообщения сокета при получении почтового запроса

Мне удалось заставить работать следующее, но если клиент не подключен, почтовый метод не работает.

io.on('connection', function(socket){ 
    console.log('socket connected'); 
    app.post('/api/guests', function(req, res){ 
     socket.emit('newguest', {hello: 'world'}); 
    }); 
}) 

Я также попытался сохранить сокет в более высокую область действия и даже глобально, но это, похоже, не работает.

Заранее благодарен!

ответ

2

Вам не нужно называть «гнездо испускают» внутри на («соединение» ...)

Попробуйте что-то вроде этого:.

app.post('/api/news', user.can('access private page'), function(req, res, next) { 
    io.sockets.emit("nuova:news", data); 
}); 

В моем случае я пройти "Ио" переменную из файла "server.js" (или app.js), как это:

require('./app/myRoute')(app, user, io); 

И получить его в контроллере, как это:

module.exports = function(app, user, io) { 
    ... 
} 

"ю" объявлен как это:

var wsServer = require('http').createServer(app); 
var io = require('socket.io').listen(wsServer); 

Я надеюсь, что это дополнительная информация может быть полезна для вас ...

+0

Спасибо! Я заработал! – mattc19

+0

@ mattc19 Great !! –

Смежные вопросы