1

ツイットを取得しました。コンソールですべて正常に印刷していますが、データをビューに送信したいのですが、socketio を使用してそれを行う方法がわかりません。

何か案が?

var TwitterController = {

'index': function(req,res) {

var twitter = require('ntwitter');

var twit = new twitter({
  consumer_key: '...',
  consumer_secret: '...',
  access_token_key: '...',
  access_token_secret: '...'
});

twit.stream('statuses/filter', { track: ['dublin', 'spain']} , function(stream) {
  stream.on('data', function (data) {
    console.log(data.user.screen_name + ': ' + data.text);

    req.socket.emit('tweet', {
                    user: data.user.screen_name,
        text: data.text
    });

  });
});
       res.view();
},
};
module.exports = TwitterController;

ビューでは、すべてのtwitsを印刷しようとしています

<ul class="tw"></ul>

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script> 
<script src="/socket.io/socket.io.js"></script>
<script>
  var socket = io.connect('http://localhost:1337');


  jQuery(function($){
    var twList = $('ul.tw');
  });

  socket.on('tweet', function (data) {
    twList.prepend('<li>' + data.user + '</li>');
  });
</script>
4

1 に答える 1

4

Sails v0.9 を試してみると、バンドルされているサンプルがボイラープレート接続ロジックを処理するため、すぐに使用できるようになります。

重要なのは、 を使用する代わりに、 を使用してres.view()ツイートを提供することres.json(tweets)です。

この例では、ストリームを使用しているため、res.pipe(stream).

次に、sails.io.js をフロントエンドで/twitter使用して socket.io リクエストを に送信し、その結果を楽しみと利益のために使用できます。

次のフロントエンド コードは、Sails v0.9.x にバンドルされている小さなクライアント側 SDK (sails.io.js) を使用していることを前提としています。

socket.get('/twitter', function (tweets) {
  console.log('Got the following tweets from the server :: ', tweets);
}

箱から出してすぐにSailsルーターで動作socket.getする便利な方法にすぎないことに注意してください. socket.emitHTTP 経由でアクセスできるようにしたくない pubsub 固有のコードがある場合でも、好きなすべてのカスタム socket.io を行うことができます。

Sails.io.js はsocket.post、 、socket.put、およびもサポートしsocket.deleteており、同等の jQuery AJAX メソッド (例$.post)と同様の API を使用します。

于 2013-07-19T03:06:50.593 に答える