Comet: Ajax-push med Jetty og Dojo
d42ab0e9-6c14-4863-909d-227261b880cd
|
Presentation |
I HTTP-protokollen er det i utgangpunktet alltid klienten som initierer forespørsler. Men hva gjør du hvis en hendelse oppstår på serveren og du trenger å informere en eller mange klienter om dette så fort som mulig?
En vanlig løsning er å spørre serveren med jevne mellomrom ved å bruke Ajax. Slik polling gir dårlig responstid og fører til et unødvendig høyt antall forspørsler. Ved å trikse litt med HTTP kan vi imidlertid holde en forespørsel åpen over lang tid og la serveren sende data når det passer. Denne asynkrone push-arkitekturen kalles gjerne "Comet".
Dette foredraget forklarer teknologien bak Comet, de nye mulighetene den tilbyr og utfordringene vi får på kjøpet. Foredraget tar utgangspunkt i servletcontaineren Jetty og Javascript-biblioteket Dojo. Sammen gjør disse det svært enkelt å utvikle Comet-baserte applikasjoner. Vi viser hvordan man kommer i gang med Comet og hvordan vi ved hjelp av Jetty og Dojo kan lage en webbasert chatapplikasjon på få minutter. Vi ser på flere eksempler der Comet er i produksjonskode og diskuterer ytelse og skalerbarhet i Jetty sin implementasjon. Vi viser også hvordan Comet støttes i forslaget til den kommende versjon 3.0 av Java Servlets-spesifikasjonen.
Outline:
- Why Comet?
- Increasing need for low latency, "always current" services
- Limitations of Polling, Ajax
- What is Comet?
- Comet transports, long poll vs. streaming
- Comet is HTTP
- Asynchronuous IO (it's hard)
- Bayeux protocol
- Some Comet examples (Screensshots / live demos / screencasts)
- SVNSearch real-time commits
- live.chess.com
- GMail
- Distributed Paint clone implemented with Javascript and Comet.
- About Jetty
- Small, fast, testable, embeddable, and enjoyable open source servlet container.
- About Dojo
- Javascript toolkit
- DOM manipulation, Effects, Widgets
- Plugin based
- Client side of Bayeux protocol implemented as a Dojo plugin
- Chat example with Jetty and Dojo. (probably a mix of live coding and slides)
- Create Maven project
- Add Jetty, Dojo, Comet dependencies
- Add ContinuationCometdServlet to web.xml
- Adding a main method for Jetty with a SelectChannelConnector
- Creating a simple chat application with Dojo
- Comet performance and scalability
- Greg's numbers?
- 20.000 concurrent users
- Comparison with polling
- Comet limitations
- Container support
- OS/Container tuning (file descriptors, )
- Firewalls
- Proxying (Apache mod_proxy?)
- The future
- Servlet 3.0
- Bayeux on Tomcat, Glassfish
Required experience:
Deltakere bør ha kjennskap til web-progammering i Java og ha grunnleggende kunnskap om HTTP. Erfaring med Javascript er en fordel.
-
Eirik BjørsnøsEirik Bjørsnøs er en uavhengig konsulent og gründer som holder til i Trondheim. Mye av tiden hans går med til produktutvikling og oppdrag, men han setter også av rikelig med tid til å prøve ut nye teknologier. Spesielt gøy synes han det er å finne nye måter å gjøre komplekse ting enklere på.Eirik er hovedutvikler for Maven-pluginen for OS X-applikasjoner på Codehaus, han har laget verdens raskeste søkemotor for versjonskontoll og skriver av og til på bloggen sin simplericity.com



Intermediate
Java Web Technologies