2

我在后端使用Sails 0.11 ,在前端使用angularjs

我在sails 中有一个TwitterController,使用以下代码,使用Twitter Streaming API 打开一个流(这使用节点模块twit):

var Twit = require('twit');

var T = new Twit(sails.config.twit);

var stream = T.stream('statuses/filter', {
    track: ['apple']
});

module.exports = {
    open: function(req, res) {
        if (!req.isSocket) {
            return res.badRequest();
        }

        var socketId = sails.sockets.id(req.socket);

        stream.start();

        stream.on('tweet', function(tweet) {
            sails.log.debug('Tweet received.');
            sails.sockets.emit(socketId, 'tweet', tweet);
        });
    }
};

在我的前端(使用angular-sails模块):

$sails.get('/twitter/open').then(function(resp) {
  console.log(resp.status);
}, function(resp) {
  alert('Houston, we got a problem!');
});

这当然会到达我的后端控制器,并且流媒体开始了,但是我如何收听

sails.sockets.emit(socketId, 'tweet', tweet);

由服务器发出?

我会很感激这里的任何帮助!

4

2 回答 2

3

Sails 库创建了一个全局变量“io”,因此您也可以使用:

io.socket.on("tweet", function(data){})
于 2015-06-04T12:48:25.767 回答
2

按照 wZVanG 的回答。我就是这样做的,使用angular-sails角度模块。

$sails.get('/twitter/open').then(function(resp) {
  console.log(resp.status);
}, function(resp) {
  alert('Houston, we got a problem!');
});

$sails.on('tweet', function(message) {
  console.log(message);
});

这会将收到的每条推文记录到浏览器的控制台。

于 2015-06-04T12:52:06.743 回答