node.js - emit socket.io and sailsjs (Twitter API) -
i got twits, i'm printing of them ok in console, send data view , don't know how can using socketio.
any idea?
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;
and in view i'm trying print 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>
if give sails v0.9 try, you'll have easier time w/ out of box since bundled example handles boilerplate connection logic you.
the key is, instead of using res.view()
, serve tweets res.json(tweets)
.
in example, you're using streams, can take advantage of res.pipe(stream)
.
then can use sails.io.js on front-end send socket.io request /twitter
, , use results fun , profit.
the following front-end code assumes you're using tiny client-side sdk (sails.io.js) bundled in sails v0.9.x:
socket.get('/twitter', function (tweets) { console.log('got following tweets server :: ', tweets); }
keep in mind
socket.get
convenience method on top ofsocket.emit
works sails router out of box. can still custom socket.io things if have pubsub-specific code don't want make accessible via http.sails.io.js supports
socket.post
,socket.put
, ,socket.delete
, similar api comparable jquery ajax methods (e.g.$.post
)
Comments
Post a Comment