server push and comet (rails user group hamburg 2009-06-10)

43
Server Push or „How to initiate client side changes from the server without polling every second or so“ Donnerstag, 11. Juni 2009

Upload: ralph-von-der-heyden

Post on 18-Dec-2014

5.227 views

Category:

Technology


0 download

DESCRIPTION

This is the short talk I gave at the Rails usergroup Hamburg event on 2009-06-10.

TRANSCRIPT

Page 1: Server push and Comet (Rails user group Hamburg 2009-06-10)

Server Pushor „How to initiate client side changes from the server

without polling every second or so“

Donnerstag, 11. Juni 2009

Page 2: Server push and Comet (Rails user group Hamburg 2009-06-10)

Websocket

Donnerstag, 11. Juni 2009

Page 3: Server push and Comet (Rails user group Hamburg 2009-06-10)

HTML5

Donnerstag, 11. Juni 2009

Page 4: Server push and Comet (Rails user group Hamburg 2009-06-10)

var myWebSocket = new("ws://www.websocket.org");myWebSocket.onmessage = function(evt)

{ alert( "Received Message: " + evt.data); };

Donnerstag, 11. Juni 2009

Page 5: Server push and Comet (Rails user group Hamburg 2009-06-10)

Can you use it?

Donnerstag, 11. Juni 2009

Page 6: Server push and Comet (Rails user group Hamburg 2009-06-10)

IE6 (released 2001) market share May 09:

~15%

Donnerstag, 11. Juni 2009

Page 7: Server push and Comet (Rails user group Hamburg 2009-06-10)

No!

Donnerstag, 11. Juni 2009

Page 8: Server push and Comet (Rails user group Hamburg 2009-06-10)

Then what?

Donnerstag, 11. Juni 2009

Page 9: Server push and Comet (Rails user group Hamburg 2009-06-10)

Juggernaut

Donnerstag, 11. Juni 2009

Page 10: Server push and Comet (Rails user group Hamburg 2009-06-10)

needs flash

Donnerstag, 11. Juni 2009

Page 11: Server push and Comet (Rails user group Hamburg 2009-06-10)

no thanks

Donnerstag, 11. Juni 2009

Page 12: Server push and Comet (Rails user group Hamburg 2009-06-10)

Comet

Donnerstag, 11. Juni 2009

Page 13: Server push and Comet (Rails user group Hamburg 2009-06-10)

general technique, no implementation

Donnerstag, 11. Juni 2009

Page 14: Server push and Comet (Rails user group Hamburg 2009-06-10)

longer connections

Donnerstag, 11. Juni 2009

Page 15: Server push and Comet (Rails user group Hamburg 2009-06-10)

server and client side components

Donnerstag, 11. Juni 2009

Page 16: Server push and Comet (Rails user group Hamburg 2009-06-10)

server side

Donnerstag, 11. Juni 2009

Page 17: Server push and Comet (Rails user group Hamburg 2009-06-10)

traditionally (think Apache):one thread per connection

Donnerstag, 11. Juni 2009

Page 18: Server push and Comet (Rails user group Hamburg 2009-06-10)

Comet serversreduce server-side resources per connection

• Reduce overhead per thread

• use event libraries

• use microthreads (e.g. Erlang)

Donnerstag, 11. Juni 2009

Page 19: Server push and Comet (Rails user group Hamburg 2009-06-10)

client side

Donnerstag, 11. Juni 2009

Page 20: Server push and Comet (Rails user group Hamburg 2009-06-10)

asynchronous request

Donnerstag, 11. Juni 2009

Page 21: Server push and Comet (Rails user group Hamburg 2009-06-10)

hold it!

Donnerstag, 11. Juni 2009

Page 22: Server push and Comet (Rails user group Hamburg 2009-06-10)

drop connection after receiving something useful

Donnerstag, 11. Juni 2009

Page 23: Server push and Comet (Rails user group Hamburg 2009-06-10)

then reinitiate connection

Donnerstag, 11. Juni 2009

Page 24: Server push and Comet (Rails user group Hamburg 2009-06-10)

still request/reponse

Donnerstag, 11. Juni 2009

Page 25: Server push and Comet (Rails user group Hamburg 2009-06-10)

BUT

data flow occurs on the server‘s schedule

close approximation of the server → client flow

Donnerstag, 11. Juni 2009

Page 26: Server push and Comet (Rails user group Hamburg 2009-06-10)

Implementations

Donnerstag, 11. Juni 2009

Page 27: Server push and Comet (Rails user group Hamburg 2009-06-10)

Bayeux

Donnerstag, 11. Juni 2009

Page 28: Server push and Comet (Rails user group Hamburg 2009-06-10)

standard protocol

Donnerstag, 11. Juni 2009

Page 29: Server push and Comet (Rails user group Hamburg 2009-06-10)

many servers use it

CometdErlyCometGlassFish

JettyOrbited

Persevere...

Donnerstag, 11. Juni 2009

Page 30: Server push and Comet (Rails user group Hamburg 2009-06-10)

many client libs use it

Dojo (inventor)jQueryGWT

...

Donnerstag, 11. Juni 2009

Page 31: Server push and Comet (Rails user group Hamburg 2009-06-10)

combine any server and js lib

Donnerstag, 11. Juni 2009

Page 32: Server push and Comet (Rails user group Hamburg 2009-06-10)

Jabber

Donnerstag, 11. Juni 2009

Page 33: Server push and Comet (Rails user group Hamburg 2009-06-10)

JS libs available

Donnerstag, 11. Juni 2009

Page 34: Server push and Comet (Rails user group Hamburg 2009-06-10)

mature Server

Donnerstag, 11. Juni 2009

Page 35: Server push and Comet (Rails user group Hamburg 2009-06-10)

scales

Donnerstag, 11. Juni 2009

Page 36: Server push and Comet (Rails user group Hamburg 2009-06-10)

can hold ten thousands connections on a single server

Donnerstag, 11. Juni 2009

Page 37: Server push and Comet (Rails user group Hamburg 2009-06-10)

proprietary solutions

Donnerstag, 11. Juni 2009

Page 38: Server push and Comet (Rails user group Hamburg 2009-06-10)

RMDS2Web Server

500.000 concurrent users on single Dell-server

"most scalable real-time push web system"

commercial

Donnerstag, 11. Juni 2009

Page 39: Server push and Comet (Rails user group Hamburg 2009-06-10)

APE (Ajax Push Engine)

"Real time data streaming"

open source client and serverproprietary protocol (NOT Bayeux)

Donnerstag, 11. Juni 2009

Page 40: Server push and Comet (Rails user group Hamburg 2009-06-10)

Who is doing it?

Donnerstag, 11. Juni 2009

Page 41: Server push and Comet (Rails user group Hamburg 2009-06-10)

FacebookMeebo (Chat)

...

Donnerstag, 11. Juni 2009

Page 42: Server push and Comet (Rails user group Hamburg 2009-06-10)

That is all!

Donnerstag, 11. Juni 2009

Page 43: Server push and Comet (Rails user group Hamburg 2009-06-10)

Reminder:

Rails-Konferenz call for papers deadline:

1st of July

Donnerstag, 11. Juni 2009