socket.io вместе с обновлением REST api

Я реализовал REST API, используя restify.js. Он развернут на героку. Теперь я хочу добавить связь в реальном времени между сервером и пользователями (мобильными приложениями). Моя идея состоит в том, чтобы выдавать события клиентам, чтобы «рассказать» их, когда для них доступны какие-либо данные (и они могут вызвать обычный REST api для извлечения этих данных). Я использую redis PUB / SUB в своем приложении для трансляции событий.

Поэтому мой очень простой код выглядит так:

var redisClient = require('./redis-client'); var app = restify.createServer(); app.get('/give-me-data',function(req,res,next){ res.json('{ data: 'abcdef' }); }); redisClient.on('message',function(channel,message){ if(message=='data-available') { // now I want to emit event to mobile clients through socket.io } }); redisClient.subscribe('data-available-channel'); app.listen(process.env.PORT); 

Как я могу добавить socket.io в такое приложение, чтобы клиенты (мобильные приложения) подключались к нему и слушали события?

Вы можете использовать socket.io . Вот статья, показывающая простое приложение (игра в реальном времени). На самом деле это довольно просто. Я предлагаю отправить данные непосредственно через сокет. Вы сохраните один запрос. Я имею в виду, что ваш клиент получит сообщение через токен и после этого сделает запрос к API. Таким образом, вы можете сохранить это.

Сервер:

 var io = require('socket.io').listen(80); io.sockets.on('connection', function (socket) { socket.emit('news', { hello: 'world' }); socket.on('my other event', function (data) { console.log(data); }); }); 

клиент: