2

バックエンドでSails 0.11を使用し、フロントエンドでangularjsを使用しています。

Twitter ストリーミング API でストリームを開くために、次のコードを使用してTwitterControllerをセイルに配置しました (これはノード モジュール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, 'つぶやき', つぶやき);

サーバーによって発行されましたか?

ここで何か助けていただければ幸いです!.

4

2 に答える 2

3

Sails ライブラリはグローバル変数「io」を作成するため、以下も使用できます。

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

wZVanGの回答に続きます。angular-sails angularモジュールを使用して、これが私が行った方法です。

$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 に答える