comet with sinatra

15
!"#$% &’() +’,-(.- !/’001.2 34-()

Upload: clifford-heath

Post on 23-Jun-2015

1.655 views

Category:

Technology


1 download

DESCRIPTION

An implementation of the Bayeux (COMET) long-polling protocol with a backend using Rack with Sinatra

TRANSCRIPT

Page 1: Comet with Sinatra

!"#$%&'()*

+',-(.-

!/'001.2*34-()

Page 2: Comet with Sinatra

51.**678)',9*:1,(4,(

Page 3: Comet with Sinatra

51.*:)-(

Page 4: Comet with Sinatra

51.*;17.*-66/':-('1,

Page 5: Comet with Sinatra

%4:),'<748

=>?>@*61//',9*A:-//B-:C*61//',9D

= >?>@*E1,9F61//',9

= 5/-8)*81:C4(8*-,2*G4B81:C4(8

= E-.94*/-(4,:;*AHI*84:1,2*61//JD

= G1.C8*&'()*AK18(D*8(-,2-.2*3%%L*AM-:CN*4(:D

= E1&*/-(4,:;N*/1&*1O4.)4-28

= M4<7'.48*,1,F3%%L*A,1,FM-:CD*84.O4.

Page 6: Comet with Sinatra

M-:C*>LP= :-//A4,OD

!*Q*8(-(78N*)4-24.8N*B12;*R

= 4-:)*:-//*1,/;*:1,(-',8*-*8',9/4*M4<748(

= B12;*:-,*B4*-,*$,7K4.-B/4*A01.*K7/('F6-.(D

= 84.O4.*:-,*784*S446F>/'O4N*4(:

= T1(*:1K6-('B/4*&'()*&4B81:C4(8*1.*5/-8)*81:C4(8

= ++E*:18(8*64.F.4<748(

Page 7: Comet with Sinatra

Client 1 Server Client 2

Page LoadPoll

Poll

Request

User Event

RespAsync

Poll

User EventRequest

Poll

Timeout

Poll

AsyncResp

Page 8: Comet with Sinatra

E1,9*61//',9*2'8-2O-,(-948

= +4.O4.*C4468*61//*.4<748(8*U1,*)1/2V

= W,0.'4,2/;*(1*)4-O;F().4-242*84.O4.8

= >6-:)4N*K1,9.4/N*4(:

=G1.C8*,':4/;*1,*4O4,(42*+4.O4.8

= %)',*A&'()*-8;,:X8',-(.-D

= T1(*9112*01.*8)-.42*)18(',9*1.*34.1C7

=#7/('F(-B*6.1B/4K

Page 9: Comet with Sinatra

%)4*Y-;47Z*6.1(1:1/

= [1\1*517,2-('1,]8*!"#$%[*6.1\4:(

= )((6^__8O,`:1K4(2`:1K_(.7,C_B-;47Z_B-;47Z`)(K/

= L7B/'8)_87B8:.'B4*1,*U!)-,,4/8V

= Y.1&84.8*/'K'(*6-.-//4/*:1,,4:('1,8*64.*21K-',```*',:/72',9*-:.188*K7/('6/4*(-B8N*7,01.(7,-(4/;

= >(*K18(*(&1*?+"T*@3M*:1,,4:('1,8*64.*:/'4,(

= ",4*(1*/1,9F61//*A.4:4'O4*-8;,:).1,178*K488-948D

= ",4*(1*84,2*.4<748(8

Page 10: Comet with Sinatra

Y-;47Z*K488-948

= 3-,28)-C4

= !1,,4:(_['8:1,,4:(

= +7B8:.'B4_W,87B8:.'B4

= U!)-,,4/8V*)-O4*6-()42*,-K48

= L7B/'8)

= >7()4,(':-('1,*'8*4Z:/7242*A/-;4.42*1,*(16D

= U>2O':4V*8-;8*)1&*(1*61//*-,2*)1&*10(4,

Page 11: Comet with Sinatra

<script src="jquery.comet.js"></script><script src="json2.js”></script><script type="application/javascript">

$.comet.connect(location.origin+"/cometd");$.comet.subscribe("/chat/demo", function(msg) {...});$.comet.publish("/chat/demo", { user: username, join: true, chat: username + " has joined" });

</script>

ALSO:• startBatch(), endBatch()•unsubscribe(channel), disconnect()

\<74.;`:1K4(`\8

Page 12: Comet with Sinatra

B-;47ZF.-:C*94Ka*94K*',8(-//*B-;47ZF.-:Ca*:-(*:1,0'9`.7

require ‘bayeux’

class ChatServer < Bayeux

configure { set :public, File.dirname(__FILE__) }

get '/' { erb :index }

def deliver msg

channel = msg['channel']

publish :data => msg['data'], :channel => channel

{ :successful => true, :channel => channel

:clientId => msg['clientId'],:id => msg['id']

}

end

end

run ChatServer.new

Page 13: Comet with Sinatra

",*9'()7B^

= )((68^__9'()7B`:1K_:\)4-()_\<74.;`:1K4(

= !1,(-',8*()4*?-O-8:.'6(*>LP*01.*Y-;47Z

= )((68^__9'()7B`:1K_:\)4-()_B-;47ZF.-:C

= !1,(-',8*-*+',-(.-*B-84*:/-88

Page 14: Comet with Sinatra

+(-(78

= W848*&4-C*!/'4,(P2]8*A6.1O'24*;17.*1&,D

= T1*('K417(*01.*24-2*:/'4,(8

= T1*24(4:('1,*10*K7/('6/4F(-B8

= T1*-7(1F.4,491('-(4*-0(4.*84.O4.*.48(-.(

= T1*84.O4.F','('-(42*('K417(*10*/1,9*61//8

= #-,7-//;*(48(42*F*)-.2*(1*-7(1K-(4b

Page 15: Comet with Sinatra

!/'001.2`34-()c9K-'/`:1K-O-'/-B/4*01.*)'.4

Questions?