2015-04-10 2 views
1

Я использую express.js и socket.io, и я хочу достичь этого, когда новые данные поступают на один из маршрутов, сокет передает информацию подписчикам.Как вызвать сокет socket.io из маршрута express.js?

Что-то в этой манере:

app.get('/:id', function(req, res){ 
     usersFactory.add({ 
     id: req.params.id 
     }); 
     //HOW TO EMIT userFactory.getAll() HERE??? 
     res.json({status: 'success'}); 
    }); 

Полный код доступен здесь: https://gist.github.com/javascrewpt/c28565cfd307073675f3

Спасибо за ваше время!

+0

@What именно вопрос, с которым вы хотели бы помочь? И, пожалуйста, включите соответствующий код в свой актуальный вопрос. – jfriend00

+0

Я отредактировал мое сообщение .. надеюсь, теперь это более понятно – uglycode

ответ

2

Если вы хотите отправить сообщение для всех подключенных сокетов с помощью Socket.io, можно использовать:

io.sockets.emit(msg, data); 

Если это не то, что вы пытаетесь сделать, то просьба описать словами, что именно вы хотите помочь.

+0

Это именно то, что мне нужно! Не могли бы вы объяснить, почему некоторые испускания находятся под событиями «connect» (т. Е. Io.emit), и этот глобальный? В чем разница между этими двумя выбросами? Является ли «законным» просто использовать io.sockets emit? Еще раз спасибо! – uglycode

+0

@uglycode - Если вы пытаетесь отправить сообщение конкретному клиенту, вам понадобится конкретный объект 'socket' для этого клиента, и обычное место для доступа к нему находится под событием' connect'. Если вы пытаетесь отправить сообщение всем подключенным клиентам, вы можете сделать это глобально из любого места, потому что библиотека socket.io имеет свой собственный список всех подключенных клиентов, а 'io.sockets' - способ обращения ко всем подключенным клиентам к пространству имен по умолчанию. – jfriend00

+0

Спасибо за объяснение! – uglycode

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