SlideShare uma empresa Scribd logo
1 de 19
Current




          @robrighter
What is Node.js?

_ non-blocking
_ evented
_ javascript




                   @robrighter
Why is node useful?




                      @robrighter
Why is node useful?

It can handle a ton of
concurrent connections




                      @robrighter
A Gross
Oversimplification
of HTTP


              Give me a page




                    Sure




             Connection Closed



                                 @robrighter
AJAX Polling

               Got any updates?


                      No


               Connection Closed


               Got any updates?


                      No


               Connection Closed
                                   @robrighter
Comet

        Got any updates?



            ...wait



              Yes



        Connection Closed




                            @robrighter
Websocket




            asyncronous updates




                                  @robrighter
Evented Programming




                      @robrighter
Non-Evented Example

mysql_select_db("example", $con);
$result = mysql_query("SELECT * FROM user WHERE fname='Bill'");

while($row = mysql_fetch_array($result)){
    echo $row['fname'];
}




                                                   @robrighter
Evented Example

fs.readFile("./file", function (err, data) {
  if (err) throw err;
  sys.puts(data);
});




                                  @robrighter
An Example




             @robrighter
Server Side




              @robrighter
Setup the Data Source
var rb = new lpb.LongPollingBuffer(70);
var dump = process.createChildProcess("tcpdump",["-i","en1","-A","-n","port", "80"]);
var ignorelist = ['localhost','foxnews.com'];

//Setup the listener to handle the flow of data from the dump
dump.addListener("output", function (data) {
    var hosts = data.match(/Host: (.*)/g);
    if(hosts){
        _.each(hosts, function(item){
            var out = item.slice(6);
            sys.puts(out);
            if(!_.detect(ignorelist, function(s){ return (item.indexOf(s) > -1); })){
                rb.push(out);
            }
            
        });
    }
});




                                                                    @robrighter
LongPollingBuffer
                                   DATA ARRAY

 DATA:    1      1         1   0       1    0       0     1          1   0
OFFSET:   0      2         3   4       5        6   7     8          9   10




              CLIENT ONE                                CLIENT TWO



                                                              @robrighter
Setup the Updater
fu.get("/update", function (req, res) {
       //Send the HTTP Headers
      res.sendHeader(200,{"Content-Type": "text/html"});
      
       //Parse out the since from the query string
       var thesince;
      if(url.parse(req.url,true).hasOwnProperty('query') &&
url.parse(req.url,true).query.hasOwnProperty('since')){
          thesince = parseInt(url.parse(req.url,true)['query']['since']);
      }
      else {
          thesince = -1;
      }

      //Setup the datalistener (note why this works so well with JS scoping)
      rb.addListenerForUpdateSince(thesince, function(data){
           var body = '['+_.map(data,JSON.stringify).join(',n')+']';
           res.write( body );
           res.close();
      });
});



                                                                    @robrighter
Client Side




              @robrighter
Long Polling Request
var url = “/update?since=” + lastrecieved;
$.getJSON(url, function(data){

 
 
       var itemstoadd = _.map(data.reverse(),function(item){

 
 
 
        lastrecieved = item["offset"];

 
 
 
        return domainmarkup(item['value']);

 
 
 
      });
 

 
 
 
      var uc = $("#updatedcontent");

 
 
 
      _.map(itemstoadd, function(item){

 
 
 
        if(!interrupt){

 
 
 
            uc.prepend(item);

 
 
 
        }

 
 
 
      });

 
 
 
             setTimeout('getupdate(lastrecieved)', 1000);
});




                                                   @robrighter
Questions?


github.com/robrighter

twitter.com/robrighter




                 @robrighter

Mais conteúdo relacionado

Mais procurados

Real-Time Python Web: Gevent and Socket.io
Real-Time Python Web: Gevent and Socket.ioReal-Time Python Web: Gevent and Socket.io
Real-Time Python Web: Gevent and Socket.ioRick Copeland
 
Client server part 12
Client server part 12Client server part 12
Client server part 12fadlihulopi
 
Callbacks and control flow in Node js
Callbacks and control flow in Node jsCallbacks and control flow in Node js
Callbacks and control flow in Node jsThomas Roch
 
Async programming on NET
Async programming on NETAsync programming on NET
Async programming on NETyuyijq
 
G*なクラウド 雲のかなたに ショートバージョン
G*なクラウド 雲のかなたに ショートバージョンG*なクラウド 雲のかなたに ショートバージョン
G*なクラウド 雲のかなたに ショートバージョンTsuyoshi Yamamoto
 
Curso de Node.js e MongoDB - 16
Curso de Node.js e MongoDB - 16Curso de Node.js e MongoDB - 16
Curso de Node.js e MongoDB - 16Luiz Duarte
 
Need It Robust? Make It Fragile!
Need It Robust? Make It Fragile!Need It Robust? Make It Fragile!
Need It Robust? Make It Fragile!Yegor Bugayenko
 
Avoiding Callback Hell with Async.js
Avoiding Callback Hell with Async.jsAvoiding Callback Hell with Async.js
Avoiding Callback Hell with Async.jscacois
 
Visualizing ORACLE performance data with R @ #C16LV
Visualizing ORACLE performance data with R @ #C16LVVisualizing ORACLE performance data with R @ #C16LV
Visualizing ORACLE performance data with R @ #C16LVMaxym Kharchenko
 
Fail Fast. Into User's Face.
Fail Fast. Into User's Face.Fail Fast. Into User's Face.
Fail Fast. Into User's Face.Yegor Bugayenko
 
Big Data Analytics with Google BigQuery. GDG Summit Spain 2014
Big Data Analytics with Google BigQuery. GDG Summit Spain 2014Big Data Analytics with Google BigQuery. GDG Summit Spain 2014
Big Data Analytics with Google BigQuery. GDG Summit Spain 2014javier ramirez
 

Mais procurados (19)

Jk rubyslava 25
Jk rubyslava 25Jk rubyslava 25
Jk rubyslava 25
 
Real-Time Python Web: Gevent and Socket.io
Real-Time Python Web: Gevent and Socket.ioReal-Time Python Web: Gevent and Socket.io
Real-Time Python Web: Gevent and Socket.io
 
Client server part 12
Client server part 12Client server part 12
Client server part 12
 
Callbacks and control flow in Node js
Callbacks and control flow in Node jsCallbacks and control flow in Node js
Callbacks and control flow in Node js
 
Async programming on NET
Async programming on NETAsync programming on NET
Async programming on NET
 
G*なクラウド 雲のかなたに ショートバージョン
G*なクラウド 雲のかなたに ショートバージョンG*なクラウド 雲のかなたに ショートバージョン
G*なクラウド 雲のかなたに ショートバージョン
 
Burrow in basel
Burrow in baselBurrow in basel
Burrow in basel
 
Code
CodeCode
Code
 
Alt.Net Presentation
Alt.Net PresentationAlt.Net Presentation
Alt.Net Presentation
 
Textile
TextileTextile
Textile
 
Curso de Node.js e MongoDB - 16
Curso de Node.js e MongoDB - 16Curso de Node.js e MongoDB - 16
Curso de Node.js e MongoDB - 16
 
Need It Robust? Make It Fragile!
Need It Robust? Make It Fragile!Need It Robust? Make It Fragile!
Need It Robust? Make It Fragile!
 
Avoiding Callback Hell with Async.js
Avoiding Callback Hell with Async.jsAvoiding Callback Hell with Async.js
Avoiding Callback Hell with Async.js
 
Gevent rabbit rpc
Gevent rabbit rpcGevent rabbit rpc
Gevent rabbit rpc
 
Cooking pies with Celery
Cooking pies with CeleryCooking pies with Celery
Cooking pies with Celery
 
Simpatía
SimpatíaSimpatía
Simpatía
 
Visualizing ORACLE performance data with R @ #C16LV
Visualizing ORACLE performance data with R @ #C16LVVisualizing ORACLE performance data with R @ #C16LV
Visualizing ORACLE performance data with R @ #C16LV
 
Fail Fast. Into User's Face.
Fail Fast. Into User's Face.Fail Fast. Into User's Face.
Fail Fast. Into User's Face.
 
Big Data Analytics with Google BigQuery. GDG Summit Spain 2014
Big Data Analytics with Google BigQuery. GDG Summit Spain 2014Big Data Analytics with Google BigQuery. GDG Summit Spain 2014
Big Data Analytics with Google BigQuery. GDG Summit Spain 2014
 

Destaque

Meeting record sheet_template_(2)
Meeting record sheet_template_(2)Meeting record sheet_template_(2)
Meeting record sheet_template_(2)hannahmorse
 
DOMINGO 29 DEL TO. CICLO C. DIA 16 DE OCTUBRE DEL 2016. PPS
DOMINGO 29 DEL TO. CICLO C. DIA 16 DE OCTUBRE DEL 2016. PPSDOMINGO 29 DEL TO. CICLO C. DIA 16 DE OCTUBRE DEL 2016. PPS
DOMINGO 29 DEL TO. CICLO C. DIA 16 DE OCTUBRE DEL 2016. PPSfederico almenara ramirez
 
Crónica dia 8º del viaje a la india. dia 5 de abril del 2016
Crónica dia 8º del viaje a la india. dia 5 de abril del 2016Crónica dia 8º del viaje a la india. dia 5 de abril del 2016
Crónica dia 8º del viaje a la india. dia 5 de abril del 2016federico almenara ramirez
 
Magle data curation in libraries
Magle data curation in librariesMagle data curation in libraries
Magle data curation in librariesC. Tobin Magle
 
2013.6.9 doctor research
2013.6.9 doctor research2013.6.9 doctor research
2013.6.9 doctor researchVinidya Pratama
 
Aprigliano - Ciancia - Pondarré
Aprigliano - Ciancia - PondarréAprigliano - Ciancia - Pondarré
Aprigliano - Ciancia - PondarréVictoria Gagliardi
 
AdLINK Internet Media@Case Study Automotive Market
AdLINK Internet Media@Case Study Automotive MarketAdLINK Internet Media@Case Study Automotive Market
AdLINK Internet Media@Case Study Automotive MarketCris Nulli
 
"SEMANA DE LA EDUCACIÓN VIAL" -"5121"PEDRO PLANAS SILVA
"SEMANA DE LA EDUCACIÓN VIAL" -"5121"PEDRO PLANAS SILVA"SEMANA DE LA EDUCACIÓN VIAL" -"5121"PEDRO PLANAS SILVA
"SEMANA DE LA EDUCACIÓN VIAL" -"5121"PEDRO PLANAS SILVARossana Mayuri
 
Introduction to Big Data and Hadoop
Introduction to Big Data and HadoopIntroduction to Big Data and Hadoop
Introduction to Big Data and HadoopFebiyan Rachman
 
εργασια τριτη τεεαπη
εργασια τριτη τεεαπηεργασια τριτη τεεαπη
εργασια τριτη τεεαπηvasopierr
 
How to be a Religion - O meglio, cosa fare per trasformare un brand in una re...
How to be a Religion - O meglio, cosa fare per trasformare un brand in una re...How to be a Religion - O meglio, cosa fare per trasformare un brand in una re...
How to be a Religion - O meglio, cosa fare per trasformare un brand in una re...Fabio Lalli
 
IB Chemistry Real, Ideal Gas and Deviation from Ideal Gas behaviour
IB Chemistry Real, Ideal Gas and Deviation from Ideal Gas behaviourIB Chemistry Real, Ideal Gas and Deviation from Ideal Gas behaviour
IB Chemistry Real, Ideal Gas and Deviation from Ideal Gas behaviourLawrence kok
 

Destaque (18)

Meeting record sheet_template_(2)
Meeting record sheet_template_(2)Meeting record sheet_template_(2)
Meeting record sheet_template_(2)
 
DOMINGO 29 DEL TO. CICLO C. DIA 16 DE OCTUBRE DEL 2016. PPS
DOMINGO 29 DEL TO. CICLO C. DIA 16 DE OCTUBRE DEL 2016. PPSDOMINGO 29 DEL TO. CICLO C. DIA 16 DE OCTUBRE DEL 2016. PPS
DOMINGO 29 DEL TO. CICLO C. DIA 16 DE OCTUBRE DEL 2016. PPS
 
Crónica dia 8º del viaje a la india. dia 5 de abril del 2016
Crónica dia 8º del viaje a la india. dia 5 de abril del 2016Crónica dia 8º del viaje a la india. dia 5 de abril del 2016
Crónica dia 8º del viaje a la india. dia 5 de abril del 2016
 
áLbum de fotografías final
áLbum de fotografías finaláLbum de fotografías final
áLbum de fotografías final
 
Cavaliere - Alemán - Quezada
Cavaliere - Alemán - QuezadaCavaliere - Alemán - Quezada
Cavaliere - Alemán - Quezada
 
Magle data curation in libraries
Magle data curation in librariesMagle data curation in libraries
Magle data curation in libraries
 
Tabla de posiciones cat. senior
Tabla de posiciones cat. seniorTabla de posiciones cat. senior
Tabla de posiciones cat. senior
 
2013.6.9 doctor research
2013.6.9 doctor research2013.6.9 doctor research
2013.6.9 doctor research
 
Resume for Hope 2
Resume for Hope 2Resume for Hope 2
Resume for Hope 2
 
Aprigliano - Ciancia - Pondarré
Aprigliano - Ciancia - PondarréAprigliano - Ciancia - Pondarré
Aprigliano - Ciancia - Pondarré
 
AdLINK Internet Media@Case Study Automotive Market
AdLINK Internet Media@Case Study Automotive MarketAdLINK Internet Media@Case Study Automotive Market
AdLINK Internet Media@Case Study Automotive Market
 
Aparcament de bicis
Aparcament de bicisAparcament de bicis
Aparcament de bicis
 
"SEMANA DE LA EDUCACIÓN VIAL" -"5121"PEDRO PLANAS SILVA
"SEMANA DE LA EDUCACIÓN VIAL" -"5121"PEDRO PLANAS SILVA"SEMANA DE LA EDUCACIÓN VIAL" -"5121"PEDRO PLANAS SILVA
"SEMANA DE LA EDUCACIÓN VIAL" -"5121"PEDRO PLANAS SILVA
 
Introduction to Big Data and Hadoop
Introduction to Big Data and HadoopIntroduction to Big Data and Hadoop
Introduction to Big Data and Hadoop
 
Poster bb
Poster bbPoster bb
Poster bb
 
εργασια τριτη τεεαπη
εργασια τριτη τεεαπηεργασια τριτη τεεαπη
εργασια τριτη τεεαπη
 
How to be a Religion - O meglio, cosa fare per trasformare un brand in una re...
How to be a Religion - O meglio, cosa fare per trasformare un brand in una re...How to be a Religion - O meglio, cosa fare per trasformare un brand in una re...
How to be a Religion - O meglio, cosa fare per trasformare un brand in una re...
 
IB Chemistry Real, Ideal Gas and Deviation from Ideal Gas behaviour
IB Chemistry Real, Ideal Gas and Deviation from Ideal Gas behaviourIB Chemistry Real, Ideal Gas and Deviation from Ideal Gas behaviour
IB Chemistry Real, Ideal Gas and Deviation from Ideal Gas behaviour
 

Semelhante a robrighter's Node.js presentation for DevChatt

Cross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App EngineCross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App EngineAndy McKay
 
Launching Beeline with Firebase
Launching Beeline with FirebaseLaunching Beeline with Firebase
Launching Beeline with FirebaseChetan Padia
 
Building Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJavaBuilding Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJavaRick Warren
 
Beacons, Raspberry Pi & Node.js
Beacons, Raspberry Pi & Node.jsBeacons, Raspberry Pi & Node.js
Beacons, Raspberry Pi & Node.jsJeff Prestes
 
ERRest - Designing a good REST service
ERRest - Designing a good REST serviceERRest - Designing a good REST service
ERRest - Designing a good REST serviceWO Community
 
API Days Australia - Automatic Testing of (RESTful) API Documentation
API Days Australia  - Automatic Testing of (RESTful) API DocumentationAPI Days Australia  - Automatic Testing of (RESTful) API Documentation
API Days Australia - Automatic Testing of (RESTful) API DocumentationRouven Weßling
 
Get Real: Adventures in realtime web apps
Get Real: Adventures in realtime web appsGet Real: Adventures in realtime web apps
Get Real: Adventures in realtime web appsdaviddemello
 
Presto anatomy
Presto anatomyPresto anatomy
Presto anatomyDongmin Yu
 
API Days Paris - Automatic Testing of (RESTful) API Documentation
API Days Paris - Automatic Testing of (RESTful) API DocumentationAPI Days Paris - Automatic Testing of (RESTful) API Documentation
API Days Paris - Automatic Testing of (RESTful) API DocumentationRouven Weßling
 
CouchDB on Android
CouchDB on AndroidCouchDB on Android
CouchDB on AndroidSven Haiges
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applicationsTom Croucher
 
Karate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter ThomasKarate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter Thomasintuit_india
 
Alexey Kupriyanenko "The State of Modern JavaScript and Web in 2020 - Real us...
Alexey Kupriyanenko "The State of Modern JavaScript and Web in 2020 - Real us...Alexey Kupriyanenko "The State of Modern JavaScript and Web in 2020 - Real us...
Alexey Kupriyanenko "The State of Modern JavaScript and Web in 2020 - Real us...Fwdays
 
Painless Persistence in a Disconnected World
Painless Persistence in a Disconnected WorldPainless Persistence in a Disconnected World
Painless Persistence in a Disconnected WorldChristian Melchior
 
Rxjava 介紹與 Android 中的 RxJava
Rxjava 介紹與 Android 中的 RxJavaRxjava 介紹與 Android 中的 RxJava
Rxjava 介紹與 Android 中的 RxJavaKros Huang
 
Nordic APIs - Automatic Testing of (RESTful) API Documentation
Nordic APIs - Automatic Testing of (RESTful) API DocumentationNordic APIs - Automatic Testing of (RESTful) API Documentation
Nordic APIs - Automatic Testing of (RESTful) API DocumentationRouven Weßling
 
Implementing Comet using PHP
Implementing Comet using PHPImplementing Comet using PHP
Implementing Comet using PHPKing Foo
 

Semelhante a robrighter's Node.js presentation for DevChatt (20)

Cross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App EngineCross Domain Web
Mashups with JQuery and Google App Engine
Cross Domain Web
Mashups with JQuery and Google App Engine
 
huhu
huhuhuhu
huhu
 
Launching Beeline with Firebase
Launching Beeline with FirebaseLaunching Beeline with Firebase
Launching Beeline with Firebase
 
Building Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJavaBuilding Scalable Stateless Applications with RxJava
Building Scalable Stateless Applications with RxJava
 
Beacons, Raspberry Pi & Node.js
Beacons, Raspberry Pi & Node.jsBeacons, Raspberry Pi & Node.js
Beacons, Raspberry Pi & Node.js
 
ERRest - Designing a good REST service
ERRest - Designing a good REST serviceERRest - Designing a good REST service
ERRest - Designing a good REST service
 
API Days Australia - Automatic Testing of (RESTful) API Documentation
API Days Australia  - Automatic Testing of (RESTful) API DocumentationAPI Days Australia  - Automatic Testing of (RESTful) API Documentation
API Days Australia - Automatic Testing of (RESTful) API Documentation
 
Intro to Sail.js
Intro to Sail.jsIntro to Sail.js
Intro to Sail.js
 
Get Real: Adventures in realtime web apps
Get Real: Adventures in realtime web appsGet Real: Adventures in realtime web apps
Get Real: Adventures in realtime web apps
 
Physical web
Physical webPhysical web
Physical web
 
Presto anatomy
Presto anatomyPresto anatomy
Presto anatomy
 
API Days Paris - Automatic Testing of (RESTful) API Documentation
API Days Paris - Automatic Testing of (RESTful) API DocumentationAPI Days Paris - Automatic Testing of (RESTful) API Documentation
API Days Paris - Automatic Testing of (RESTful) API Documentation
 
CouchDB on Android
CouchDB on AndroidCouchDB on Android
CouchDB on Android
 
Writing robust Node.js applications
Writing robust Node.js applicationsWriting robust Node.js applications
Writing robust Node.js applications
 
Karate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter ThomasKarate for Complex Web-Service API Testing by Peter Thomas
Karate for Complex Web-Service API Testing by Peter Thomas
 
Alexey Kupriyanenko "The State of Modern JavaScript and Web in 2020 - Real us...
Alexey Kupriyanenko "The State of Modern JavaScript and Web in 2020 - Real us...Alexey Kupriyanenko "The State of Modern JavaScript and Web in 2020 - Real us...
Alexey Kupriyanenko "The State of Modern JavaScript and Web in 2020 - Real us...
 
Painless Persistence in a Disconnected World
Painless Persistence in a Disconnected WorldPainless Persistence in a Disconnected World
Painless Persistence in a Disconnected World
 
Rxjava 介紹與 Android 中的 RxJava
Rxjava 介紹與 Android 中的 RxJavaRxjava 介紹與 Android 中的 RxJava
Rxjava 介紹與 Android 中的 RxJava
 
Nordic APIs - Automatic Testing of (RESTful) API Documentation
Nordic APIs - Automatic Testing of (RESTful) API DocumentationNordic APIs - Automatic Testing of (RESTful) API Documentation
Nordic APIs - Automatic Testing of (RESTful) API Documentation
 
Implementing Comet using PHP
Implementing Comet using PHPImplementing Comet using PHP
Implementing Comet using PHP
 

robrighter's Node.js presentation for DevChatt

  • 1. Current @robrighter
  • 2. What is Node.js? _ non-blocking _ evented _ javascript @robrighter
  • 3. Why is node useful? @robrighter
  • 4. Why is node useful? It can handle a ton of concurrent connections @robrighter
  • 5. A Gross Oversimplification of HTTP Give me a page Sure Connection Closed @robrighter
  • 6. AJAX Polling Got any updates? No Connection Closed Got any updates? No Connection Closed @robrighter
  • 7. Comet Got any updates? ...wait Yes Connection Closed @robrighter
  • 8. Websocket asyncronous updates @robrighter
  • 9. Evented Programming @robrighter
  • 11. Evented Example fs.readFile("./file", function (err, data) { if (err) throw err; sys.puts(data); }); @robrighter
  • 12. An Example @robrighter
  • 13. Server Side @robrighter
  • 14. Setup the Data Source var rb = new lpb.LongPollingBuffer(70); var dump = process.createChildProcess("tcpdump",["-i","en1","-A","-n","port", "80"]); var ignorelist = ['localhost','foxnews.com']; //Setup the listener to handle the flow of data from the dump dump.addListener("output", function (data) {     var hosts = data.match(/Host: (.*)/g);     if(hosts){         _.each(hosts, function(item){             var out = item.slice(6);             sys.puts(out);             if(!_.detect(ignorelist, function(s){ return (item.indexOf(s) > -1); })){                 rb.push(out);             }                      });     } }); @robrighter
  • 15. LongPollingBuffer DATA ARRAY DATA: 1 1 1 0 1 0 0 1 1 0 OFFSET: 0 2 3 4 5 6 7 8 9 10 CLIENT ONE CLIENT TWO @robrighter
  • 16. Setup the Updater fu.get("/update", function (req, res) { //Send the HTTP Headers       res.sendHeader(200,{"Content-Type": "text/html"});        //Parse out the since from the query string var thesince;       if(url.parse(req.url,true).hasOwnProperty('query') && url.parse(req.url,true).query.hasOwnProperty('since')){           thesince = parseInt(url.parse(req.url,true)['query']['since']);       }       else {           thesince = -1;       } //Setup the datalistener (note why this works so well with JS scoping)       rb.addListenerForUpdateSince(thesince, function(data){            var body = '['+_.map(data,JSON.stringify).join(',n')+']';            res.write( body );            res.close();       }); }); @robrighter
  • 17. Client Side @robrighter
  • 18. Long Polling Request var url = “/update?since=” + lastrecieved; $.getJSON(url, function(data){ var itemstoadd = _.map(data.reverse(),function(item){ lastrecieved = item["offset"]; return domainmarkup(item['value']); });   var uc = $("#updatedcontent"); _.map(itemstoadd, function(item){ if(!interrupt){ uc.prepend(item); } }); setTimeout('getupdate(lastrecieved)', 1000); }); @robrighter

Notas do Editor