Klikk på tall for å vise stripe
Toon 1Toon 2Toon 3Toon 4Toon 5Toon 6Toon 7Toon 8Toon 9Toon 10 JavaZone JavaZone

Comet: Ajax-push med Jetty og Dojo

d42ab0e9-6c14-4863-909d-227261b880cd
View video  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.
  • Photo of Eirik Bjørsnøs
    Eirik Bjørsnøs
    Eirik 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