[英]emit socket.io and sailsjs (Twitter API)
我得到了twits,我在控制台打印所有這些都好,但我想將數據發送到視圖,我不知道如何使用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>
如果您嘗試使用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);
}
請記住,
socket.get
只是socket.emit
之上的一種便捷方法,可以與socket.emit
即用的Sails路由器配合使用。 如果你有不想通過HTTP訪問的特定於pubsub的代碼,你仍然可以做你喜歡的所有自定義socket.io。sails.io.js還支持
socket.post
,socket.put
和socket.delete
,其API類似於類似的jQuery AJAX方法(例如$.post
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.