A language for the Internet: Why JavaScript and Node.js is right for Internet Applications
-
Upload
tom-croucher -
Category
Technology
-
view
8.364 -
download
0
Transcript of A language for the Internet: Why JavaScript and Node.js is right for Internet Applications
![Page 1: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/1.jpg)
A language for the Internet
Why JavaScript and Node.js is right for Internet Applications
Tom Hughes-Croucher@sh1mmer
![Page 2: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/2.jpg)
Me(@sh1mmer)
![Page 3: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/3.jpg)
![Page 4: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/4.jpg)
![Page 5: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/5.jpg)
Scalable Server-Side Code with JavaScript
Tom Hughes-Croucher
NodeUp and Running
![Page 6: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/6.jpg)
A brief aside.A small lecture on
biology
![Page 7: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/7.jpg)
The common tree shrew
![Page 8: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/8.jpg)
Diana Monkey
![Page 9: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/9.jpg)
![Page 10: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/10.jpg)
![Page 11: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/11.jpg)
Back to your feature presentation.
![Page 12: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/12.jpg)
Internet?
![Page 13: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/13.jpg)
![Page 14: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/14.jpg)
![Page 15: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/15.jpg)
She’s called Eleanor
![Page 16: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/16.jpg)
![Page 17: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/17.jpg)
![Page 18: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/18.jpg)
![Page 19: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/19.jpg)
![Page 20: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/20.jpg)
![Page 21: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/21.jpg)
More featuresMore users
More devicesMore data
![Page 22: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/22.jpg)
Stuff
Cost
![Page 23: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/23.jpg)
How do we cope with the increase in demand?
![Page 24: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/24.jpg)
Internet Applications
![Page 25: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/25.jpg)
How about search?
![Page 26: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/26.jpg)
Browser
Server
Spidering... The Web
![Page 27: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/27.jpg)
Would take forever!
![Page 28: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/28.jpg)
Browser
Front-endServer
Database
Computation
![Page 29: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/29.jpg)
Client → Server
Computation
Computational Computing
![Page 30: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/30.jpg)
Client → Server Server → DB
Computation Computation
Internet Computing
![Page 31: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/31.jpg)
“Traditional” Approach
![Page 32: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/32.jpg)
![Page 33: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/33.jpg)
Server
![Page 34: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/34.jpg)
Request
![Page 35: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/35.jpg)
![Page 36: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/36.jpg)
![Page 37: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/37.jpg)
FULL
![Page 38: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/38.jpg)
Event-driven Approach
![Page 39: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/39.jpg)
Place-holder
![Page 40: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/40.jpg)
![Page 41: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/41.jpg)
SharedWork
Resources
![Page 42: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/42.jpg)
Welcome to Node.js
![Page 43: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/43.jpg)
Node.js?
• Server Side JavaScript runtime
• Built on top of V8 JavaScript engine from Google Chrome
• Non-blocking I/O APIs
• Easy to extend APIs and modules
![Page 44: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/44.jpg)
$Enki:~ $ node
![Page 45: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/45.jpg)
$Enki:~ $ node> 3 > 2 > 1false> true == 1true> true === 1false
![Page 46: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/46.jpg)
> console.log('Hello World');Hello World> .help.clear Break, and also clear the local context..exit Exit the prompt.help Show repl options> .clearClearing context...> .exitEnki:~ $
![Page 47: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/47.jpg)
Enki:~ $ node> var foo = "bar";> foo;'bar'> .clearClearing context...> fooReferenceError: foo is not defined at [object Context]:1:1 at Interface.<anonymous> (repl:98:19) at Interface.emit (events:27:15) at Interface._ttyWrite (readline:295:12) at Interface.write (readline:132:30) at Stream.<anonymous> (repl:79:9) at Stream.emit (events:27:15) at IOWatcher.callback (net:489:16)
![Page 48: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/48.jpg)
var http = require('http');http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');}).listen(8124, "127.0.0.1");console.log('Server running at http://127.0.0.1:8124/');
![Page 49: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/49.jpg)
var http = require('http');
//include the http library
![Page 50: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/50.jpg)
http.createServer(function (req, res) {
}).listen(8124, "127.0.0.1");
//create an http server//when ‘stuff’ happens call this anonymous function//listen on port 8124 of the IP 127.0.0.1
![Page 51: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/51.jpg)
http.createServer(function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');})
//when ‘stuff’ happens my function fires//I get a request object and a response object//I write to the response object header//HTTP status 200 and content-type ‘text/plain’//close the response with the body://Hello World
![Page 52: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/52.jpg)
console.log('Server running at http://127.0.0.1:8124/');
//write Server is running at http://127.0.0.1:8124///to the console
![Page 53: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/53.jpg)
Why is Node.js suited to Internet Apps?
![Page 54: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/54.jpg)
![Page 55: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/55.jpg)
What is the event loop?
![Page 56: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/56.jpg)
![Page 57: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/57.jpg)
Multi-tasking, one thing at a time.
![Page 58: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/58.jpg)
![Page 59: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/59.jpg)
![Page 60: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/60.jpg)
var http = require('http');server = http.createServer();
server.on('request', function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');});
server.listen(8124, "127.0.0.1");console.log('Server running at http://127.0.0.1:8124/');
![Page 61: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/61.jpg)
var http = require('http');server = http.createServer();
server.on('request', function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');});
server.listen(8124, "127.0.0.1");console.log('Server running at http://127.0.0.1:8124/');
Step 1.Evaluate 'Main'
![Page 62: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/62.jpg)
var http = require('http');server = http.createServer();
server.on('request', function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');});
server.listen(8124, "127.0.0.1");console.log('Server running at http://127.0.0.1:8124/');
Step 1.variables: http -> http module server -> http server
listeners: server.request -> function
![Page 63: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/63.jpg)
var http = require('http');server = http.createServer();
server.on('request', function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');});
server.listen(8124, "127.0.0.1");console.log('Server running at http://127.0.0.1:8124/');
Step 2.Event Loop
*
![Page 64: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/64.jpg)
var http = require('http');server = http.createServer();
server.on('request', function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');});
server.listen(8124, "127.0.0.1");console.log('Server running at http://127.0.0.1:8124/');
Step 2.Do we have active listeners?
listeners: server.request -> function
Yes! Wait for listeners.
*
![Page 65: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/65.jpg)
var http = require('http');server = http.createServer();
server.on('request', function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');});
server.listen(8124, "127.0.0.1");console.log('Server running at http://127.0.0.1:8124/');
Step 3.Event Calls
![Page 66: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/66.jpg)
var http = require('http');server = http.createServer();
server.on('request', function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');});
server.listen(8124, "127.0.0.1");console.log('Server running at http://127.0.0.1:8124/');
Step 3.'request' is called. Since
listeners: server.request -> function
Call function
![Page 67: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/67.jpg)
var http = require('http');server = http.createServer();
server.on('request', function (req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.end('Hello World\n');});
server.listen(8124, "127.0.0.1");console.log('Server running at http://127.0.0.1:8124/');
Step 3.Loop!
(go to Step 2.)
![Page 68: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/68.jpg)
Breaking the event loop
![Page 69: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/69.jpg)
![Page 70: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/70.jpg)
EE = require('events').EventEmitter;ee = new EE();
die = false;
ee.on('die', function() { die = true;});
setTimeout(function() { ee.emit('die');}, 100);
while(!die) {}
console.log('done');
![Page 71: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/71.jpg)
Why non-blocking matters
![Page 72: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/72.jpg)
var result = db.query("select * from T"); // use result
![Page 73: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/73.jpg)
What are we waiting for?
![Page 74: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/74.jpg)
![Page 75: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/75.jpg)
"Blocking" is as bad as stopping
![Page 76: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/76.jpg)
Event Loop vs. Threads
![Page 77: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/77.jpg)
8mb
PHP
8gb ram8000/8 = 1000
~1000 users per machine
![Page 78: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/78.jpg)
8gb ram8000/0.006 = 1.3m
1.3m/2 ~ 650k users
Node.jsTCP = 2kb
HTTP = 6kb
![Page 79: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/79.jpg)
Apache vs NGINXconcurrency ! reqs/sec
http://blog.webfaction.com/a-little-holiday-present
![Page 80: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/80.jpg)
Apache vs NGINXconcurrency ! memory
http://blog.webfaction.com/a-little-holiday-present
![Page 81: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/81.jpg)
Node.js is designed for communication, just like
your applications
![Page 82: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/82.jpg)
Thanks!
![Page 83: A language for the Internet: Why JavaScript and Node.js is right for Internet Applications](https://reader034.fdocuments.us/reader034/viewer/2022050613/546e88e7af79599a798b4ac1/html5/thumbnails/83.jpg)
Follow me @sh1mmer
Tom Hughes-Croucher@sh1mmer