socket.io
TRANSCRIPT
SOCKET.IOGETTING DIRTY WITH 0.7
HELLO> WHOAMI
{ "name": "socket.io" , "version": "0.7.0" , "description": "Real time apps made cross-browser & easy with a WebSocket-like API" , "keywords": ["websocket", "realtime", "socket.io", "comet", "ajax"] , "author": "Guillermo Rauch <[email protected]>" , "contributors": [ { "name": "Guillermo Rauch", "email": "[email protected]" } , { "name": "Arnout Kazemier", "email": "[email protected]" } ] , "repository":{ "type": "git" , "url": "https://github.com/LearnBoost/Socket.IO-node.git" } , "dependencies": {} , "main": "index" , "engines": { "node": ">= 0.4.0" }}
@3rdEdenSTALK ME ON TWITTER
@3rd-EdenFORK ME ON GITHUB
WHAT IS SOCKET.IO
open source
REAL TIME
DIRTY
FAST
F*CKING AWESOME
CROSS BROWSER
CROSS BROWSERINCLUDING MOBILE & INTERNET EXPLORER 5
CROSS BROWSERORLY? YA RLY
web socket
web socket
flash socket
web socket
flash socket
html file (forever iframe)
web socket
flash socket
html file (forever iframe)
xhr multipart
web socket
flash socket
html file (forever iframe)
xhr multipart
xhr polling
web socket
flash socket
html file (forever iframe)
xhr multipart
xhr polling
jsonp polling
communityWATCHERS 2750+
FORKS 250+PULL REQUESTS 110+
GROUPS MEMBERS 1000~
NODE CAMP USERS
Y U NO FORK
WHATʼS NEW IN 0.7THE LESSONS WE LEARNED FROM 0.6
COMPLETE API REWRITE
var io = require(ʻsocket.ioʼ) , http = require(ʻhttpʼ);
var s = http.createServer(function(q,r){r.writeHead(200);r.end(ʻsupʼ)});
s.listen(80)io.listen(s); // uses existing server
var io = require(ʻsocket.ioʼ) , http = require(ʻhttpʼ);
var s = http.createServer(function(q,r){r.writeHead(200);r.end(ʻsupʼ)});
s.listen(80)io.listen(s); // uses existing server
var io = require(ʻsocket.ioʼ); io.listen(80); // creates one for us
var io = require(ʻsocket.ioʼ).listen();
// express styled configurationio.configure(ʻdevelopmentʼ, function(){ io.set(ʻlog levelʼ, 3);});
MULTIPLE PROCESSES
NEW PROTOCOL
MESSAGE FLAGSFIRE AND FORGET, JSON
NEW PROTOCOL
io.sockets.on(ʻconnectionʼ, function (socket) { socket.volatile.send(ʻpew pewʼ); socket.json.send([{nodecamp:ʻftwʼ}]);};
NEW PROTOCOL
ACKNOWLEDGEMENTSBETWEEN CLIENT & SERVER, SERVER & CLIENT
NEW PROTOCOL
// server side io.sockets.on(ʻconnectionʼ, function (socket) { socket.send(ʻbyeʼ, function () { // ack }); }); // client side var socket = io.connect(); socket.send(ʻhiʼ, function () { // ack });
NEW PROTOCOL
NAMESPACINGMULTIPLEXING
NEW PROTOCOL
// server side io.sockets.on(ʻconnectionʼ, function (socket) { socket.send(ʻbyeʼ, function () { // ack }); }); // client side var socket = io.connect(); socket.send(ʻhiʼ, function () { // ack });
NEW PROTOCOL
HANDSHAKINGFUCK YEAH, SESSIONS SUPPORT
NEW PROTOCOL
EVENTS
NEW PROTOCOL
CODE SHARINGMODULES ARE REUSED ON THE CLIENT & SERVER
TESTINGBOTH FOR THE CLIENT AND THE SERVER
“ONE MORE THING™”© STEVE JOBS
RELEASETHIS WEEK
Q ATALK NERDY TO ME
presentation.end(‘thanks’);