Node.js and friends
Click here, Press
→
key to advance.
Presented at
D. E. Shaw India, Hyderabad
(18-Jul-2012)
Navigation
[arrow keys] to go next and previous
[mouse scroll wheel] to go next and previous
[Ctrl or Command] + [+/-] to zoom in and out
[touch gestures] for mobile devices
Agenda
[Demo] DESIS Hackathon app
Node.js
Express.js
Web Sockets
Mongo DB
Disclaimer:
I am not an expert in any of these.
DESIS Hackathon 2012 app
Node.js
Platform built on Chrome's JavaScript runtime (V8) for easily building fast, scalable network applications.
Event driven
"Server Side"
JavaScript
Non-blocking I/O. Async model.
Event loop
libev, libeio
Authored by Ryan Dahl. Sponsored by
Joyent
Alternatives:
Twisted
for Python,
Event Machine
for Ruby
Node.js - Getting Started
Installation
Using Installers - Mac, Linux and Windows
using Package Managers - Mac and Linux
Build from source - Mac and Linux
node REPL
Hello World
Diving into Node.js
#shamelessplug
Node.js - Concurrency
I/O bound vs CPU bound
Everything is asynchronous except your code
Non-blocking I/O. Async model.
Event loop
libev, libeio
Single stack environment
Multi-processor concurrency?
child_process.fork()
For load balancing, use
cluster
module
Ref:
Node.js from Enterprise Java Perspective
Node.js - Globals
global
process
console
require()
require.resolve()
require.cache
require.extensions [array]
__filename, __dirname
module, exports
setTimeout, clearTimeout
setInterval, clearInterval
Node.js - Modules
Each file is a module
Core Modules (fs, os, http)
File Modules
Module extensions (.js, .json, .node)
Module resolution
Cycles
Module caching
Node Package Manager -
npm
Modules wiki
Node.js - Frameworks
Express.js
Flatiron
Derby
Many more...
Express.js
High performance, high class web development for Node.js
Built on top of Connect
Installation via npm
Project template generation
Features
Robust routing
View rendering (
Jade
)
Environment based configuration (NODE_ENV)
Settings - Internal & arbitary settings
Session support
Middleware
Web Sockets
Intro to WebSockets
The Awesome 'Socket.io'
WebSocket-compatible server and client with fallback for legacy browsers
Storing data associated with a client
Namespace restriction
Acknowledgements are possible
Multiple transports and fallback
More info:
socket.io
|
Github
Socket.io - Browser Support
Transports
WebSocket
Adobe® Flash® Socket
AJAX long polling
AJAX multipart streaming
Forever Iframe
JSONP Polling
Browsers
Internet Explorer 5.5+
Safari 3+
Google Chrome 4+
Firefox 3+
Opera 10.61+
mongo DB {name:"mongo", type: "DB"}
Scalable, high-performance, open source NoSQL database. Written in C++.
Features:
Document Oriented Storage
Full Index Support
Replication & High Availability
Auto Sharding
Querying
Map/Reduce
Fast In-Place updates
Node.js driver, ORM and more about this later...
Thank You