2013-07-17 2 views
1

나는 twits가있어 콘솔에서 모두 ok를 인쇄하고 있지만보기에 데이터를 보내고 싶습니다. 어떻게 할 수 있을지 모르겠습니다. socketio를 사용합니다.socket.io 및 sailsjs를 내 보냅니다. (Twitter API)

어떤 아이디어가 있습니까?

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; 

이보기에 나는 밖으로 w이/당신이 돛 시도 V0.9주는 경우에, 당신은 쉽게 시간이있을 것이다

<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

모든 twits를 인쇄하기 위해 노력하고있어 상자에 묶여있는 예제가 당신을위한 상용구 연결 논리를 다루기 때문에.

키는 res.view()을 사용하는 대신 res.json(tweets)으로 트윗을 제공합니다.

이 예에서는 스트림을 사용하므로 res.pipe(stream)을 활용할 수 있습니다.

그런 다음 프런트 엔드에서 sails.io.js를 사용하여 /twitter으로 socket.io 요청을 보내고 재미와 이익을 위해 결과를 사용할 수 있습니다.

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

:

다음 프런트 엔드 코드는 작은 클라이언트 측 SDK 항해의 v0.9.x에 번들 (sails.io.js)를 사용하는 가정 socket.get은 상자 밖의 Sails 라우터에서 작동하는 socket.emit 상단의 편리한 방법입니다. HTTP를 통해 액세스 할 수 없도록하려는 pubsub 특정 코드가 있으면 원하는 모든 사용자 지정 socket.io 작업을 계속 수행 할 수 있습니다.

sails.io.js 또한 (예컨대 $.post) 대등 jQuery를 AJAX 방식

유사한 API와 socket.post, socket.put 및 지원 socket.delete
관련 문제