SlideShare a Scribd company logo
Writing Portable WebSocket in Java

         Jeanfrancois Arcand

         twitter.com/jfarcand
Pardon?

• Worked 10 years for Sun Microsystems
 •   Active Commiter on Tomcat 4/5
 •   Active Commiter GlassFish 1/2/3
     •   Glassfish v3 extensible container kernel
     •   Performance/Scalability
 •   Creator of the Grizzly NIO Framework
• Creator of the AHC (AsyncHttpClient)
  library
• Creator of Atmosphere
Atmosphere

 Apache 2      Github ~470
               « followers »
                               Client +
 Supported                     server
    ~25
frameworks                     Scala, Groovy,
                                JRuby, Java
 Since 2008
                20 000 downloads per
                       months
1.0.0.beta3
Atmosphere

 Apache 2      Github ~450
               « followers »
                               Client +
 Supported    EXTREMEL
                               server
    ~25        Y ACTIVE
frameworks        !!!          Scala, Groovy,
                                JRuby, Java
 Since2008
                20 000 downloads per
                       months
1.0.0.beta2
Today’s Presentation
     WebSocket
Today’s Presentation
             WebSocket

Definition
Today’s Presentation
             WebSocket

Definition               Free for
                           all!!!
Today’s Presentation
             WebSocket

C’est quoi
Definition               Free for
                         Free for
                           all!!!
                            all!

             Atmospher
                 e
Today’s Presentation
                WebSocket

   Definition               Free for
                              all!

                Atmospher
                    e
Concepts
Today’s Presentation
                WebSocket

   C’est quoi
   Definition               Free for
                              all!!!
                              all!

                Atmospher
                    e
Concepts                    Demo
WebSockets

is a web technology providing for
     bi-directional, full-duplex
   communications channels over a
      single TCP connection. The
        WebSocket API is being
 standardized by the W3C, and the
     WebSocket protocol has been
  standardized by the IETF as RFC
                 6455
Before (Long-Polling)

           Request


Browse                       Server
   r
Before (Long-Polling)

           Request


Browse                       Server
   r
Before (Long-Polling)

           Request


Browse                       Server
   r
          Response
Oups!!


         Request

Browse        None   Server
   r
Oups!

         Request


Browse             Server
   r
                   Zzzz
Better!


         Request

Browse                  Server
   r

                      Cache
Better!

         Request


Browse               Server
   r

                   Cache
Pushing the Protocol (HTTP
          Streaming)
           Request


Browse                   Server
   r
Pushing the Protocol (HTTP
          Streaming)
           Request


Browse                   Server
   r
Pushing the Protocol (HTTP
          Streaming)
           Request


Browse                   Server
   r
          Response
Pushing the Protocol (HTTP
          Streaming)
           Request


Browse                   Server
   r
          Response

          Response
Oups!!

            Request


Browse                 Server
   r
  Hell!!!   Response

            Response
Pushing the Protocol (HTTP
           Streaming)
            Request


Browse                    Server
   r
  Hell!!!
   Hack     Response

            Response
Oups!!!

         Request


Browse              Server
   r
         Response
            Proxy
         Response
Better

         Request


Browse                Server
   r
         Response Cache

         Response
Better

          Request


Browse                 Server
   r
         Response Cache
         « HeartBeat
         Response
              »
Better: Server Side Events (SSE)

            Request


Browse                    Server
   r
           Response

           Response
Oups!!!

         Request


Browse              Server
   r
         Response
            Proxy
         Response
Better

          Request


Browse                 Server
   r
         Response Cache
         « HeartBeat
         Response
              »
WebSockets

          Hanshake


Browse                Server
   r
WebSockets

          Hanshake


Browse                Server
   r
            OK
WebSockets

          Request


Browse                Server
   r
WebSockets

          Request


Browse                Server
   r
WebSockets




Browse                Server
   r
         Response
WebSockets

          Request


Browse                Server
   r
WebSockets

          Request

           Request
Browse                Server
   r
WebSockets

          Request

           Request
Browse                Server
   r
WebSockets




Browse                Server
   r
         Response

         Response
Anytime




Browse              Server
   r
         Response
Life is good, lalalalalala




Browse                        Server
   r
            Response
Oups!!




Browse              Server
   r
         Response
            Proxy
Better!




Browse                Server
   r
         Response Cache
First Request
T 127.0.0.1:65062 -> 127.0.0.1:8080 [AP]
GET / HTTP/1.1.
Upgrade: websocket.
Connection: Upgrade.
Host: 127.0.0.1:8080.
Origin: http://127.0.0.1:8080.
Sec-WebSocket-Key: Tz9qdt3lmte6Slf+GvpRqQ==.
Sec-WebSocket-Version: 13.
Sec-WebSocket-Extensions: x-webkit-deflate-
frame.
Response
T 127.0.0.1:8080 -> 127.0.0.1:51292 [AP]
HTTP/1.1 101 Switching Protocols.
Upgrade: WebSocket.
Connection: Upgrade.
Sec-WebSocket-Accept:
HVXA7SqH5uYeN6aD9tZ0JQbfTJA=.
Life is good, lalalalalala
T 127.0.0.1:8080 -> 127.0.0.1:51292 [AP]
HTTP/1.1 101 Switching Protocols.
Upgrade: WebSocket.
Connection: Upgrade.
Sec-WebSocket-Accept:
HVXA7SqH5uYeN6aD9tZ0JQbfTJA=.
OUPS!!!
T 127.0.0.1:8080 -> 127.0.0.1:65064 [AP]
HTTP/1.1 501 Not Implemented.
Server: Apache-Coyote/1.1.
X-Atmosphere-error: Websocket protocol not
supported.
Transfer-Encoding: chunked.
Date: Fri, 15 Jun 2012 10:06:30 GMT.
Connection: close.
.
WebSocket API – Standard
           JavaScript
websocket = new WebSocket(wsUri);
websocket.onopen = function(evt) { …};
websocket.onclose = function(evt) { …};
websocket.onmessage = function(evt) { …};
websocket.onerror = function(evt) { …};


webSocket.send(…)
WebSocket API – Java

Jetty 7, GlassFish 3.1, Netty 3, Tomcat
7.0.27, Resin 4, JBoss Plugin


JSR 356:
http://jcp.org/en/jsr/detail?id=356


AHC (Client -> De facto)
http://github.com/sonatype/async-http-
client
Life is good,
 lalalalalala
OUPS!!!
Ready?
Safari             Tomcat
                      7
Firefox            Jetty7

                    Jetty8
Chrome

                   GlassFis
Opera                h3.
                   GlassFis
  IE                  h
                     312
Free for all
Safari                   Tomcat
                            7
Firefox                  Jetty7

                          Jetty8
Chrome

                         GlassFis
Opera                      h3.
                         GlassFis
  IE                        h
                           312
Free for all
Safari                   Tomcat
                            7
Firefox                  Jetty7

          Imdat!!         Jetty8
Chrome

                         GlassFis
Opera                      h3.
                         GlassFis
  IE                        h
                           312
Free for all
Safari                         Tomcat
                                  7
          Streamin             Jetty7
Firefox
              g
                Imdat!!         Jetty8
Chrome

                               GlassFis
Opera                            h3.
                               GlassFis
  IE                              h
                                 312
Free for all
Safari                        Tomcat
                                 7
          Streamin            Jetty7
Firefox
              g
                Imdat!!SSE     Jetty8
Chrome

                              GlassFis
Opera                           h3.
                              GlassFis
  IE                             h
                                312
Free for all
Safari                            Tomcat
                                     7
          Streamin                Jetty7
Firefox
              g
                Imdat!!SSE        Jetty8
Chrome

                                GlassFis
Opera                         JSONP
                                  h3.
                                 GlassFis
  IE                                h
                                   312
Free for all
Safari                                 Tomcat
                                          7
           Streamin                    Jetty7
Firefox
               g
                 Imdat!!SSE            Jetty8
Chrome

                                     GlassFis
Opera
           Long                    JSONP
                                       h3.
                                      GlassFis
  IE      Polling                        h
                                        312
Safari                 Tomcat
                          7
Firefox                Jetty7
          Atmosphere
Chrome       to the     Jetty8

           rescue!!!   GlassFis
Opera                    h3.
                       GlassFis
  IE                      h
                         312
Atmosphere -WebSockets

Safari                                        Tomcat
                                                 7
                                              Jetty7




                             Atmosphere API
Firefox
             atmosphere.js
                                               Jetty8
Chrome

                                              GlassFis
Opera                                           h3.
                                              GlassFis
  IE                                             h
                                                312
Atmosphere - HTML5 Server Side
               Events
Safari                                     Tomcat
                                              7
                                           Jetty7




                          Atmosphere API
Firefox
          atmosphere.js
                                           Servlet
Chrome
                                             3
                                           WebLogi
Opera                                        c
                                           GlassFis
  IE                                          h
                                             312
Atmosphere Long-Polling/HTTP
                Streaming
Safari                                        JBoss

                                              Jetty7




                            Atmosphere API
Firefox
            atmosphere.js
                                             Servlet
Chrome
                                               3
                                             WebLogi
Opera                                          c.
                                             GlassFis
  IE                                            h
Atmosphere

Safari                                                   JBoss

                                                         Jetty7




                                       Atmosphere API
Firefox
          atmosphere.js
              Same
Chrome    API, transport                                Servlet
                                                          3
          independent!!                                 WebLogi
Opera                                                     c.
                                                        GlassFis
  IE                                                       h
Socket.IO, GWT, Wicket, JSF, etc.

Safari                                     JBoss

                                           Jetty7




                         Atmosphere API
Firefox
          Socket.IO
                                          Servlet
Chrome
                                            3
                                          WebLogi
Opera                                       c.
                                          GlassFis
  IE                                         h
PORTABLE!!!!!

Safari                                             JBoss

                                                   Jetty7




                                 Atmosphere API
Firefox
          Socket.IO
                      PORTABLE                    Servlet
Chrome
                                                    3
                                                  WebLogi
Opera                                               c.
                                                  GlassFis
  IE                                                 h
Big Big Big Mistake

• Frameworkthat support ONLY
 WebSockets



    Going into
   Production?
  IMPOSSIBLE
Atmosphere
Definition

• Suspend: open a   channel
• Resume: close a   channel
• Broadcast: push   message to one
 or more channel
Components

Atmosphere.js



                Interceptor(s)


                            Handler(s)
Components

Atmosphere.js



   Javascript   Interceptor(s)
     client

                            Handler(s)
Components

Atmosphere.js



                Interceptor(s)

       Intercepts/
          Filters           Handler(s)
Components

Atmosphere.js



                            Application
                Interceptor(s)
                               s Logic


                            Handler(s)
Components

Atmosphere.js
                             Your Servlet



                Interceptor(s)


                          ServletHandler
Components
                          Your Servlet
Atmosphere.js
                            Based
                          Framework

                Interceptor(s)


                          ServletHandler
Components

Atmosphere.js
                ws           Your Servlet



                Interceptor(s)


                          ServletHandler
Components

Atmosphere.js
                ws           Your Servlet
                  ss
                   e
                Interceptor(s)


                          ServletHandler
Components

Atmosphere.js
                ws           Your Servlet
                  ss
                   http
                   e
                Interceptor(s)


                          ServletHandler
Request

Browse
   r


Browse             Server
   r


Browse
   r
Request

Browse
   r


Browse             Server
   r


Browse
   r
Suspend

Browse
   r


Browse             Server
   r


Browse
   r
Suspend

Browse
   r

                   S
Browse              Server
   r


Browse
   r
Suspend

Browse
   r

                   S
Browse              Server
   r


Browse
   r
Suspend

Browse
   r

                   S
Browse              Server
   r


Browse
   r
Broadcast

Browse
   r
                              B
                     S
Browse               Server
   r


Browse
   r
Broadcast

Browse
   r
                              B
                     S
Browse               Server
   r


Browse
   r
Resume

Browse
   r
                               B

Browse                Server
   r              R


Browse
   r
Resume

Browse
   r
                               B

Browse                Server
                  S
   r


Browse
   r
Broadcaster

• Default:    in-memory
• Cloud
 •   RedisBroadcaster
 •   JMSBroadcaster
 •   XMPPBroadcaster
 •   HazelcastBroadcaster
 •   JGroupsBroascaster
• Multi-Threads,        Async I/O par
 default
Broadcaster Cloud

Browse
   r                         S
                             Server

Browse
   r


Browse                   S Server
   r
Broadcaster Cloud

Browse
   r                         S
                             Server

Browse
   r


Browse                   S Server
   r
Broadcaster Cloud

Browse                                B
   r                         S
                             Server

Browse
   r


Browse                   S Server
   r
Broadcaster Cloud

Browse                             B
   r                         Server


Browse
   r


Browse
   r                         Server
Broadcaster Cloud

Browse
   r                         Server


Browse
   r
                                      B
Browse
   r                         Server
Broadcaster Cloud

Browse
   r                         Server


Browse
   r


Browse
   r                         Server
Atmosphere API

• WebSocketHandler
 •   Only WebSocket (WARNING)!
• AtmosphereHandler
 •   All transport
• Jersey   Resource
 •   All transport
• Meteor
 •   All transport
WebSocket Sub Protocol

• WebSocketProtocol
 Define your own websocket protocol


• SimpleHttpProtocol
  WebSocket’s message mapped to HTTP
  POST, avec read/write asynchrone.
• SwaggerSocket:REST over
 WebSockets -> Powerful Protocol
Let’s have some fun
Single Client to Rule Them All




https://github.com/Atmosphere/atmos
phere/blob/master/samples/chat/src/m
 ain/webapp/jquery/application.js#L1
WebSocket


https://github.com/Atmosphere/atmos
phere/blob/master/samples/websocke
                  t-
chat/src/main/java/org/atmosphere/sa
mples/chat/WebSocketChat.java#L33
WebSocket, SSE, long-polling



https://github.com/Atmosphere/atmos
phere/blob/master/samples/chat/src/m
ain/java/org/atmosphere/samples/chat
 /ChatAtmosphereHandler.java#L33
Socket IO


https://github.com/Atmosphere/atmos
phere/blob/master/samples/socketio-
chat/src/main/java/org/atmosphere/sa
mples/chat/SocketIOChatAtmosphere
            Handler.java#L34
Jersey


https://github.com/Atmosphere/atmos
phere/blob/master/samples/sse-rest-
chat/src/main/java/org/atmosphere/sa
mples/chat/jersey/ResourceChat.java
                 #L32
JAXRS 2


https://github.com/Atmosphere/atmos
 phere/blob/master/samples/jaxrs2-
chat/src/main/java/org/atmosphere/sa
mples/chat/jaxrs2/Jaxrs2Chat.java#L3
                  4
SwaggerSocket

• REST over WebSocket
• JSON Based
• Simple
• Works with HTTP
• Multi-Request/Response
Conclusion

       Join the
      Revolution

It’s open source, it’s free to
jumps in!!
twitter.com/jfarcand
      twitter.com/atmo_framework
       twitter.com/swaggersocket

http://github.com/Atmosphere/atmosphere
http://github.com/wordnik/swaggersocket

More Related Content

What's hot (20)

PPTX
Event Driven Architecture - MeshU - Ilya Grigorik
Ilya Grigorik
 
PPTX
No callbacks, No Threads - Cooperative web servers in Ruby 1.9
Ilya Grigorik
 
PPTX
Reverse ajax in 2014
Nenad Pecanac
 
PDF
ApacheCon 2014 - What's New in Apache httpd 2.4
Jim Jagielski
 
PDF
Building Real-Time Applications with Android and WebSockets
Sergi Almar i Graupera
 
KEY
Deploying Plack Web Applications: OSCON 2011
Tatsuhiko Miyagawa
 
KEY
The HTML5 WebSocket API
David Lindkvist
 
PDF
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
Jim Jagielski
 
PDF
Toster - Understanding the Rails Web Model and Scalability Options
Fabio Akita
 
KEY
Pushing the web — WebSockets
Roland M
 
KEY
Plack at YAPC::NA 2010
Tatsuhiko Miyagawa
 
PDF
WebSockets with Spring 4
Sergi Almar i Graupera
 
KEY
Plack at OSCON 2010
Tatsuhiko Miyagawa
 
KEY
Web frameworks don't matter
Tomas Doran
 
PDF
HTML5 WebSocket for the Real-Time Web and the Internet of Things
Peter Moskovits
 
PDF
Realtime web application with java
JeongHun Byeon
 
PPTX
Web sockets in Java
Pance Cavkovski
 
KEY
Intro to PSGI and Plack
Tatsuhiko Miyagawa
 
PDF
WebSockets wiith Scala and Play! Framework
Fabio Tiriticco
 
PPTX
Solving anything in VCL
Fastly
 
Event Driven Architecture - MeshU - Ilya Grigorik
Ilya Grigorik
 
No callbacks, No Threads - Cooperative web servers in Ruby 1.9
Ilya Grigorik
 
Reverse ajax in 2014
Nenad Pecanac
 
ApacheCon 2014 - What's New in Apache httpd 2.4
Jim Jagielski
 
Building Real-Time Applications with Android and WebSockets
Sergi Almar i Graupera
 
Deploying Plack Web Applications: OSCON 2011
Tatsuhiko Miyagawa
 
The HTML5 WebSocket API
David Lindkvist
 
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
Jim Jagielski
 
Toster - Understanding the Rails Web Model and Scalability Options
Fabio Akita
 
Pushing the web — WebSockets
Roland M
 
Plack at YAPC::NA 2010
Tatsuhiko Miyagawa
 
WebSockets with Spring 4
Sergi Almar i Graupera
 
Plack at OSCON 2010
Tatsuhiko Miyagawa
 
Web frameworks don't matter
Tomas Doran
 
HTML5 WebSocket for the Real-Time Web and the Internet of Things
Peter Moskovits
 
Realtime web application with java
JeongHun Byeon
 
Web sockets in Java
Pance Cavkovski
 
Intro to PSGI and Plack
Tatsuhiko Miyagawa
 
WebSockets wiith Scala and Play! Framework
Fabio Tiriticco
 
Solving anything in VCL
Fastly
 

Similar to Writing Portable WebSockets in Java (20)

PDF
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
Arun Gupta
 
PDF
HTML5 Websockets and Java - Arun Gupta
JAX London
 
PDF
Websocket 1.0
Arun Gupta
 
PPTX
Codecamp Iasi-26 nov 2011 - Html 5 WebSockets
Florin Cardasim
 
PPTX
Codecamp iasi-26 nov 2011-web sockets
Codecamp Romania
 
PDF
Server-Side Programming Primer
Ivano Malavolta
 
PPTX
Web technologies: HTTP
Piero Fraternali
 
PDF
Html5 web sockets - Brad Drysdale - London Web 2011-10-20
Nathan O'Hanlon
 
PDF
Intro to WebSockets and Comet
dylanks
 
PDF
Web Sockets in Java EE 7
Siva Arunachalam
 
PDF
Introduction to WebSockets
Gunnar Hillert
 
PDF
HTML5 WebSockets
Harri Hämäläinen
 
PPTX
WebSocket protocol
Kensaku Komatsu
 
PDF
WebSocket
njamnjam
 
ZIP
Websockets at tossug
clkao
 
PDF
HTML5, Websockets & the Mobile Web
Dominique Guinard
 
PPTX
Programming WebSockets with Glassfish and Grizzly
C2B2 Consulting
 
PDF
Html6 forgotten in html5
Mathieu Elie
 
PDF
Websocket shanon
Takafumi Ikeda
 
PPTX
Ws
Sunghan Kim
 
Building HTML5 WebSocket Apps in Java at JavaOne Latin America 2012
Arun Gupta
 
HTML5 Websockets and Java - Arun Gupta
JAX London
 
Websocket 1.0
Arun Gupta
 
Codecamp Iasi-26 nov 2011 - Html 5 WebSockets
Florin Cardasim
 
Codecamp iasi-26 nov 2011-web sockets
Codecamp Romania
 
Server-Side Programming Primer
Ivano Malavolta
 
Web technologies: HTTP
Piero Fraternali
 
Html5 web sockets - Brad Drysdale - London Web 2011-10-20
Nathan O'Hanlon
 
Intro to WebSockets and Comet
dylanks
 
Web Sockets in Java EE 7
Siva Arunachalam
 
Introduction to WebSockets
Gunnar Hillert
 
HTML5 WebSockets
Harri Hämäläinen
 
WebSocket protocol
Kensaku Komatsu
 
WebSocket
njamnjam
 
Websockets at tossug
clkao
 
HTML5, Websockets & the Mobile Web
Dominique Guinard
 
Programming WebSockets with Glassfish and Grizzly
C2B2 Consulting
 
Html6 forgotten in html5
Mathieu Elie
 
Websocket shanon
Takafumi Ikeda
 
Ad

Recently uploaded (20)

PDF
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
PDF
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
PPTX
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
PDF
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
DOCX
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
PPTX
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
PPT
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
PDF
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
PDF
Staying Human in a Machine- Accelerated World
Catalin Jora
 
PDF
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
PDF
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
PPTX
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
DOCX
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
PDF
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
PPTX
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
PPTX
Digital Circuits, important subject in CS
contactparinay1
 
PDF
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
PDF
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
PDF
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
PDF
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
Mastering Financial Management in Direct Selling
Epixel MLM Software
 
CIFDAQ Market Wrap for the week of 4th July 2025
CIFDAQ
 
Mastering ODC + Okta Configuration - Chennai OSUG
HathiMaryA
 
What’s my job again? Slides from Mark Simos talk at 2025 Tampa BSides
Mark Simos
 
Python coding for beginners !! Start now!#
Rajni Bhardwaj Grover
 
From Sci-Fi to Reality: Exploring AI Evolution
Svetlana Meissner
 
Ericsson LTE presentation SEMINAR 2010.ppt
npat3
 
How do you fast track Agentic automation use cases discovery?
DianaGray10
 
Staying Human in a Machine- Accelerated World
Catalin Jora
 
Kit-Works Team Study_20250627_한달만에만든사내서비스키링(양다윗).pdf
Wonjun Hwang
 
“Voice Interfaces on a Budget: Building Real-time Speech Recognition on Low-c...
Edge AI and Vision Alliance
 
The Project Compass - GDG on Campus MSIT
dscmsitkol
 
Cryptography Quiz: test your knowledge of this important security concept.
Rajni Bhardwaj Grover
 
Agentic AI lifecycle for Enterprise Hyper-Automation
Debmalya Biswas
 
Agentforce World Tour Toronto '25 - MCP with MuleSoft
Alexandra N. Martinez
 
Digital Circuits, important subject in CS
contactparinay1
 
Automating Feature Enrichment and Station Creation in Natural Gas Utility Net...
Safe Software
 
Newgen 2022-Forrester Newgen TEI_13 05 2022-The-Total-Economic-Impact-Newgen-...
darshakparmar
 
Future-Proof or Fall Behind? 10 Tech Trends You Can’t Afford to Ignore in 2025
DIGITALCONFEX
 
NLJUG Speaker academy 2025 - first session
Bert Jan Schrijver
 
Ad

Writing Portable WebSockets in Java