SlideShare una empresa de Scribd logo
1 de 106
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

Más contenido relacionado

La actualidad más candente

Event Driven Architecture - MeshU - Ilya Grigorik
Event Driven Architecture - MeshU - Ilya GrigorikEvent Driven Architecture - MeshU - Ilya Grigorik
Event Driven Architecture - MeshU - Ilya GrigorikIlya Grigorik
 
No callbacks, No Threads - Cooperative web servers in Ruby 1.9
No callbacks, No Threads - Cooperative web servers in Ruby 1.9No callbacks, No Threads - Cooperative web servers in Ruby 1.9
No callbacks, No Threads - Cooperative web servers in Ruby 1.9Ilya Grigorik
 
Reverse ajax in 2014
Reverse ajax in 2014Reverse ajax in 2014
Reverse ajax in 2014Nenad Pecanac
 
ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4Jim Jagielski
 
Building Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSocketsBuilding Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSocketsSergi Almar i Graupera
 
Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Tatsuhiko Miyagawa
 
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse ProxyApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse ProxyJim Jagielski
 
Toster - Understanding the Rails Web Model and Scalability Options
Toster - Understanding the Rails Web Model and Scalability OptionsToster - Understanding the Rails Web Model and Scalability Options
Toster - Understanding the Rails Web Model and Scalability OptionsFabio Akita
 
Pushing the web — WebSockets
Pushing the web — WebSocketsPushing the web — WebSockets
Pushing the web — WebSocketsRoland M
 
Web frameworks don't matter
Web frameworks don't matterWeb frameworks don't matter
Web frameworks don't matterTomas Doran
 
HTML5 WebSocket for the Real-Time Web and the Internet of Things
HTML5 WebSocket for the Real-Time Weband the Internet of ThingsHTML5 WebSocket for the Real-Time Weband the Internet of Things
HTML5 WebSocket for the Real-Time Web and the Internet of ThingsPeter Moskovits
 
Realtime web application with java
Realtime web application with javaRealtime web application with java
Realtime web application with javaJeongHun Byeon
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkFabio Tiriticco
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCLFastly
 

La actualidad más candente (20)

Event Driven Architecture - MeshU - Ilya Grigorik
Event Driven Architecture - MeshU - Ilya GrigorikEvent Driven Architecture - MeshU - Ilya Grigorik
Event Driven Architecture - MeshU - Ilya Grigorik
 
No callbacks, No Threads - Cooperative web servers in Ruby 1.9
No callbacks, No Threads - Cooperative web servers in Ruby 1.9No callbacks, No Threads - Cooperative web servers in Ruby 1.9
No callbacks, No Threads - Cooperative web servers in Ruby 1.9
 
Reverse ajax in 2014
Reverse ajax in 2014Reverse ajax in 2014
Reverse ajax in 2014
 
ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4ApacheCon 2014 - What's New in Apache httpd 2.4
ApacheCon 2014 - What's New in Apache httpd 2.4
 
Building Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSocketsBuilding Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSockets
 
Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011Deploying Plack Web Applications: OSCON 2011
Deploying Plack Web Applications: OSCON 2011
 
The HTML5 WebSocket API
The HTML5 WebSocket APIThe HTML5 WebSocket API
The HTML5 WebSocket API
 
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse ProxyApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
 
Toster - Understanding the Rails Web Model and Scalability Options
Toster - Understanding the Rails Web Model and Scalability OptionsToster - Understanding the Rails Web Model and Scalability Options
Toster - Understanding the Rails Web Model and Scalability Options
 
Pushing the web — WebSockets
Pushing the web — WebSocketsPushing the web — WebSockets
Pushing the web — WebSockets
 
Plack at YAPC::NA 2010
Plack at YAPC::NA 2010Plack at YAPC::NA 2010
Plack at YAPC::NA 2010
 
WebSockets with Spring 4
WebSockets with Spring 4WebSockets with Spring 4
WebSockets with Spring 4
 
Plack at OSCON 2010
Plack at OSCON 2010Plack at OSCON 2010
Plack at OSCON 2010
 
Web frameworks don't matter
Web frameworks don't matterWeb frameworks don't matter
Web frameworks don't matter
 
HTML5 WebSocket for the Real-Time Web and the Internet of Things
HTML5 WebSocket for the Real-Time Weband the Internet of ThingsHTML5 WebSocket for the Real-Time Weband the Internet of Things
HTML5 WebSocket for the Real-Time Web and the Internet of Things
 
Realtime web application with java
Realtime web application with javaRealtime web application with java
Realtime web application with java
 
Web sockets in Java
Web sockets in JavaWeb sockets in Java
Web sockets in Java
 
Intro to PSGI and Plack
Intro to PSGI and PlackIntro to PSGI and Plack
Intro to PSGI and Plack
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! Framework
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCL
 

Similar a Writing Portable WebSockets in Java

Fisl - Deployment
Fisl - DeploymentFisl - Deployment
Fisl - DeploymentFabio Akita
 
Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014Arun Gupta
 
Understanding the Rails web model and scalability options
Understanding the Rails web model and scalability optionsUnderstanding the Rails web model and scalability options
Understanding the Rails web model and scalability options.toster
 
Ring: Web Apps in Idiomatic Clojure
Ring: Web Apps in Idiomatic ClojureRing: Web Apps in Idiomatic Clojure
Ring: Web Apps in Idiomatic ClojureMark McGranaghan
 
The Real-Time Web (and Other Buzzwords)
The Real-Time Web (and Other Buzzwords)The Real-Time Web (and Other Buzzwords)
The Real-Time Web (and Other Buzzwords)err
 
Evolving Archetecture
Evolving ArchetectureEvolving Archetecture
Evolving Archetectureleo lapworth
 
Site Performance - From Pinto to Ferrari
Site Performance - From Pinto to FerrariSite Performance - From Pinto to Ferrari
Site Performance - From Pinto to FerrariJoseph Scott
 
Netapp Michael Galpin
Netapp Michael GalpinNetapp Michael Galpin
Netapp Michael Galpinrajivmordani
 
Web sockets - Pentesting
Web sockets - Pentesting Web sockets - Pentesting
Web sockets - Pentesting Vandana Verma
 
.NET Architects Day - DNAD 2011
.NET Architects Day - DNAD 2011.NET Architects Day - DNAD 2011
.NET Architects Day - DNAD 2011Fabio Akita
 
09 - Fábio Akita - Além do rails
09 - Fábio Akita - Além do rails09 - Fábio Akita - Além do rails
09 - Fábio Akita - Além do railsDNAD
 
Plone Deployment (PloneConf Edition)
Plone Deployment (PloneConf Edition)Plone Deployment (PloneConf Edition)
Plone Deployment (PloneConf Edition)Steve McMahon
 
SaltStack's NetAPI at Photobucket - Denver SaltStack Meetup
SaltStack's NetAPI at Photobucket - Denver SaltStack MeetupSaltStack's NetAPI at Photobucket - Denver SaltStack Meetup
SaltStack's NetAPI at Photobucket - Denver SaltStack MeetupJon Henry
 
Browser War 2: Standards strikes back
Browser War 2: Standards strikes backBrowser War 2: Standards strikes back
Browser War 2: Standards strikes backZi Bin Cheah
 

Similar a Writing Portable WebSockets in Java (20)

Fisl - Deployment
Fisl - DeploymentFisl - Deployment
Fisl - Deployment
 
Deployment de Rails
Deployment de RailsDeployment de Rails
Deployment de Rails
 
Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014Nuts and Bolts of WebSocket Devoxx 2014
Nuts and Bolts of WebSocket Devoxx 2014
 
Understanding the Rails web model and scalability options
Understanding the Rails web model and scalability optionsUnderstanding the Rails web model and scalability options
Understanding the Rails web model and scalability options
 
Ws
WsWs
Ws
 
NullMQ @ PDX
NullMQ @ PDXNullMQ @ PDX
NullMQ @ PDX
 
Ring: Web Apps in Idiomatic Clojure
Ring: Web Apps in Idiomatic ClojureRing: Web Apps in Idiomatic Clojure
Ring: Web Apps in Idiomatic Clojure
 
The Real-Time Web (and Other Buzzwords)
The Real-Time Web (and Other Buzzwords)The Real-Time Web (and Other Buzzwords)
The Real-Time Web (and Other Buzzwords)
 
Evolving Archetecture
Evolving ArchetectureEvolving Archetecture
Evolving Archetecture
 
Site Performance - From Pinto to Ferrari
Site Performance - From Pinto to FerrariSite Performance - From Pinto to Ferrari
Site Performance - From Pinto to Ferrari
 
Netapp Michael Galpin
Netapp Michael GalpinNetapp Michael Galpin
Netapp Michael Galpin
 
Websocket shanon
Websocket shanonWebsocket shanon
Websocket shanon
 
Web sockets - Pentesting
Web sockets - Pentesting Web sockets - Pentesting
Web sockets - Pentesting
 
.NET Architects Day - DNAD 2011
.NET Architects Day - DNAD 2011.NET Architects Day - DNAD 2011
.NET Architects Day - DNAD 2011
 
09 - Fábio Akita - Além do rails
09 - Fábio Akita - Além do rails09 - Fábio Akita - Além do rails
09 - Fábio Akita - Além do rails
 
Plone Deployment (PloneConf Edition)
Plone Deployment (PloneConf Edition)Plone Deployment (PloneConf Edition)
Plone Deployment (PloneConf Edition)
 
SaltStack's NetAPI at Photobucket - Denver SaltStack Meetup
SaltStack's NetAPI at Photobucket - Denver SaltStack MeetupSaltStack's NetAPI at Photobucket - Denver SaltStack Meetup
SaltStack's NetAPI at Photobucket - Denver SaltStack Meetup
 
Browser War 2: Standards strikes back
Browser War 2: Standards strikes backBrowser War 2: Standards strikes back
Browser War 2: Standards strikes back
 
Real time web
Real time webReal time web
Real time web
 
Web-Socket
Web-SocketWeb-Socket
Web-Socket
 

Último

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)wesley chun
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CVKhem
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationRadu Cotescu
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Scriptwesley chun
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsEnterprise Knowledge
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slidevu2urc
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfsudhanshuwaghmare1
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?Antenna Manufacturer Coco
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)Gabriella Davis
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfEnterprise Knowledge
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024The Digital Insurer
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxMalak Abu Hammad
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountPuma Security, LLC
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking MenDelhi Call girls
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptxHampshireHUG
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityPrincipled Technologies
 

Último (20)

Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Scaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organizationScaling API-first – The story of a global engineering organization
Scaling API-first – The story of a global engineering organization
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Histor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slideHistor y of HAM Radio presentation slide
Histor y of HAM Radio presentation slide
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdfThe Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
The Role of Taxonomy and Ontology in Semantic Layers - Heather Hedden.pdf
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
The Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptxThe Codex of Business Writing Software for Real-World Solutions 2.pptx
The Codex of Business Writing Software for Real-World Solutions 2.pptx
 
Breaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path MountBreaking the Kubernetes Kill Chain: Host Path Mount
Breaking the Kubernetes Kill Chain: Host Path Mount
 
08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men08448380779 Call Girls In Friends Colony Women Seeking Men
08448380779 Call Girls In Friends Colony Women Seeking Men
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 

Writing Portable WebSockets in Java