server push and comet (rails user group hamburg 2009-06-10)
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)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/1.jpg)
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)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/2.jpg)
Websocket
Donnerstag, 11. Juni 2009
![Page 3: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/3.jpg)
HTML5
Donnerstag, 11. Juni 2009
![Page 4: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/4.jpg)
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)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/5.jpg)
Can you use it?
Donnerstag, 11. Juni 2009
![Page 6: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/6.jpg)
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)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/7.jpg)
No!
Donnerstag, 11. Juni 2009
![Page 8: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/8.jpg)
Then what?
Donnerstag, 11. Juni 2009
![Page 9: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/9.jpg)
Juggernaut
Donnerstag, 11. Juni 2009
![Page 10: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/10.jpg)
needs flash
Donnerstag, 11. Juni 2009
![Page 11: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/11.jpg)
no thanks
Donnerstag, 11. Juni 2009
![Page 12: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/12.jpg)
Comet
Donnerstag, 11. Juni 2009
![Page 13: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/13.jpg)
general technique, no implementation
Donnerstag, 11. Juni 2009
![Page 14: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/14.jpg)
longer connections
Donnerstag, 11. Juni 2009
![Page 15: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/15.jpg)
server and client side components
Donnerstag, 11. Juni 2009
![Page 16: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/16.jpg)
server side
Donnerstag, 11. Juni 2009
![Page 17: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/17.jpg)
traditionally (think Apache):one thread per connection
Donnerstag, 11. Juni 2009
![Page 18: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/18.jpg)
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)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/19.jpg)
client side
Donnerstag, 11. Juni 2009
![Page 20: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/20.jpg)
asynchronous request
Donnerstag, 11. Juni 2009
![Page 21: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/21.jpg)
hold it!
Donnerstag, 11. Juni 2009
![Page 22: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/22.jpg)
drop connection after receiving something useful
Donnerstag, 11. Juni 2009
![Page 23: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/23.jpg)
then reinitiate connection
Donnerstag, 11. Juni 2009
![Page 24: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/24.jpg)
still request/reponse
Donnerstag, 11. Juni 2009
![Page 25: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/25.jpg)
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)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/26.jpg)
Implementations
Donnerstag, 11. Juni 2009
![Page 27: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/27.jpg)
Bayeux
Donnerstag, 11. Juni 2009
![Page 28: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/28.jpg)
standard protocol
Donnerstag, 11. Juni 2009
![Page 29: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/29.jpg)
many servers use it
CometdErlyCometGlassFish
JettyOrbited
Persevere...
Donnerstag, 11. Juni 2009
![Page 30: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/30.jpg)
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)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/31.jpg)
combine any server and js lib
Donnerstag, 11. Juni 2009
![Page 32: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/32.jpg)
Jabber
Donnerstag, 11. Juni 2009
![Page 33: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/33.jpg)
JS libs available
Donnerstag, 11. Juni 2009
![Page 34: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/34.jpg)
mature Server
Donnerstag, 11. Juni 2009
![Page 35: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/35.jpg)
scales
Donnerstag, 11. Juni 2009
![Page 36: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/36.jpg)
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)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/37.jpg)
proprietary solutions
Donnerstag, 11. Juni 2009
![Page 38: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/38.jpg)
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)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/39.jpg)
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)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/40.jpg)
Who is doing it?
Donnerstag, 11. Juni 2009
![Page 41: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/41.jpg)
FacebookMeebo (Chat)
...
Donnerstag, 11. Juni 2009
![Page 42: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/42.jpg)
That is all!
Donnerstag, 11. Juni 2009
![Page 43: Server push and Comet (Rails user group Hamburg 2009-06-10)](https://reader033.vdocuments.mx/reader033/viewer/2022051610/549a3bc4b479596a4d8b5885/html5/thumbnails/43.jpg)
Reminder:
Rails-Konferenz call for papers deadline:
1st of July
Donnerstag, 11. Juni 2009