socket.io

42
SOCKET.IO GETTING DIRTY WITH 0.7

Upload: arnout-kazemier

Post on 20-Aug-2015

15.431 views

Category:

Technology


4 download

TRANSCRIPT

Page 1: Socket.IO

SOCKET.IOGETTING DIRTY WITH 0.7

Page 2: Socket.IO

HELLO> WHOAMI

Page 3: Socket.IO

{ "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" }}

Page 4: Socket.IO

@3rdEdenSTALK ME ON TWITTER

@3rd-EdenFORK ME ON GITHUB

Page 5: Socket.IO

WHAT IS SOCKET.IO

Page 6: Socket.IO

open source

Page 7: Socket.IO

REAL TIME

Page 8: Socket.IO

DIRTY

Page 9: Socket.IO

FAST

Page 10: Socket.IO

F*CKING AWESOME

Page 11: Socket.IO

CROSS BROWSER

Page 12: Socket.IO

CROSS BROWSERINCLUDING MOBILE & INTERNET EXPLORER 5

Page 13: Socket.IO

CROSS BROWSERORLY? YA RLY

Page 14: Socket.IO

web socket

Page 15: Socket.IO

web socket

flash socket

Page 16: Socket.IO

web socket

flash socket

html file (forever iframe)

Page 17: Socket.IO

web socket

flash socket

html file (forever iframe)

xhr multipart

Page 18: Socket.IO

web socket

flash socket

html file (forever iframe)

xhr multipart

xhr polling

Page 19: Socket.IO

web socket

flash socket

html file (forever iframe)

xhr multipart

xhr polling

jsonp polling

Page 20: Socket.IO

communityWATCHERS 2750+

FORKS 250+PULL REQUESTS 110+

GROUPS MEMBERS 1000~

Page 21: Socket.IO

NODE CAMP USERS

Y U NO FORK

Page 22: Socket.IO

WHATʼS NEW IN 0.7THE LESSONS WE LEARNED FROM 0.6

Page 23: Socket.IO

COMPLETE API REWRITE

Page 24: Socket.IO

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

Page 25: Socket.IO

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

Page 26: Socket.IO

var io = require(ʻsocket.ioʼ).listen();

// express styled configurationio.configure(ʻdevelopmentʼ, function(){ io.set(ʻlog levelʼ, 3);});

Page 27: Socket.IO

MULTIPLE PROCESSES

Page 28: Socket.IO

NEW PROTOCOL

Page 29: Socket.IO

MESSAGE FLAGSFIRE AND FORGET, JSON

NEW PROTOCOL

Page 30: Socket.IO

io.sockets.on(ʻconnectionʼ, function (socket) { socket.volatile.send(ʻpew pewʼ); socket.json.send([{nodecamp:ʻftwʼ}]);};

NEW PROTOCOL

Page 31: Socket.IO

ACKNOWLEDGEMENTSBETWEEN CLIENT & SERVER, SERVER & CLIENT

NEW PROTOCOL

Page 32: Socket.IO

// 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

Page 33: Socket.IO

NAMESPACINGMULTIPLEXING

NEW PROTOCOL

Page 34: Socket.IO

// 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

Page 35: Socket.IO

HANDSHAKINGFUCK YEAH, SESSIONS SUPPORT

NEW PROTOCOL

Page 36: Socket.IO

EVENTS

NEW PROTOCOL

Page 37: Socket.IO

CODE SHARINGMODULES ARE REUSED ON THE CLIENT & SERVER

Page 38: Socket.IO

TESTINGBOTH FOR THE CLIENT AND THE SERVER

Page 39: Socket.IO

“ONE MORE THING™”© STEVE JOBS

Page 40: Socket.IO

RELEASETHIS WEEK

Page 41: Socket.IO

Q ATALK NERDY TO ME

Page 42: Socket.IO

presentation.end(‘thanks’);