socket.io以及restify REST API

我已经使用restify.js实现了REST API。 它被部署在heroku上。 现在我想添加服务器和用户(移动应用程序)之间的实时通信。 我的想法是发送事件给客户端,告诉他们有什么数据可用(他们可以调用普通的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 。 这里是一个简单的应用程序(实时游戏)的文章。 实际上这很简单。 我会build议直接通过套接字发送数据。 您将保存一个请求。 我的意思是你的客户端将通过令牌接收到消息,之后会向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); }); }); 

客户:

 <script src="/socket.io/socket.io.js"></script> <script> var socket = io.connect('http://localhost'); socket.on('news', function (data) { console.log(data); socket.emit('my other event', { my: 'data' }); }); </script>