SlideShare uma empresa Scribd logo
1 de 53
Baixar para ler offline
Java Day
     Web Sockets in
       Java EE 7
                                             February 23, 2013



Sivasubramaniam Arunachalam                       @sivaa_in


                  http://www.meetup.com/BangaloreOpenJUG/events/102904102/
It’s me!

• Application Developer
    • Web/Enterprise/Middleware/B2B
    • Java/Java EE, Python/Django
       •      2002

• Technical Consultant
• Process Mentor
•   Speaker
Agenda
• Introduction to Web Sockets
  • History
  • Protocol Spec
  • Adoption
• Java EE 7 Support
• Demo
Tweet Ping
Web 1.0

Web 2.0
Web 3.0
  Web 4.0
600+ M                                       Active Users/Day




https://www.facebook.com/sitetour/chat.php
1991


  http://             1995




Still 22 Years Old
                     2013
     http?
http/tcp
           (1991)    (1974)




request / response

    State less
   ~ 2k bytes

   ~ 150 ms
~ Real   Time
Pull Based (Polling)
             Periodic Polling (JS/AJAX)


                                Latest Score?
         AUS 312/7
                               Latest Score?
         Same
                               Latest Score?
         Same
Server                                          Client
                               Latest Score?
         AUS 316/7

                               Latest Score?
         Same
Push Based (Comet)
         Server Push/Long Polling (JS/AJAX/iframe)


                               Latest Score?
         AUS 312/7
                               Latest Score?




Server                                               Client

         AUS 316/7

                               Latest Score?
• Request / Response
 • Too Many
 • Server Connections
• Heavy Headers
• Outdated Content
Streaming Server Side Hack


                                Latest Score?
         AUS 312/7     (1/n)




Server                                          Client

         AUS 316/7    (2/n)



         IND 0/0      (n/n)
Latest Score?

                     (1/n)
         AUS 312/7   (n-1 to go)




Server                Server
                       Buffer                      Client

         AUS 316/7
                     (2/n)
                                     AUS 312/7
                     (n-2 to go)
                                     AUS 316/7
         IND 0/0                     IND 0/0
                     (n/n)

                     PROXY
Others
• RTMP
 • Adobe
 • Are you Still using Flash?


• RTD
 • Windows/Excel
 • Non Web
Web Sockets (to rescue)
The Web Socket Way    The Original Route


                                   Hey Server!
         Hi Client!

                            Update me the Score

         AUS 312/7

Server                                               Client
         AUS 316/7



         IND 0/0


                               Not Interested. Bye
Hey Server!
          Hi Client!

                            Update me the Score
          AUS 312/7

                            Update Over info too
                       (93.0 ov)
Server                 (94.0 ov)                   Client

          AUS 316/7

                       (95.0 ov)

         IND 0/0
                       (0.0 ov)

                             Not Interested. Bye
The Background
Let’s Meet Next Year (2014)
                   http://www.tavendo.de/webmq/resources/faq
Server Side        Client Side
 • Hand Shake       • Java Script API
 • Data Transfer    • Browser Behavior

   RFC 6455


                     http://www.tavendo.de/webmq/resources/faq
Fundamentals
•   tcp        + http

•   Full Duplex (Bi-Directional)
•   Native Browser Support
•   No Hacks
•   Not Limited to Web
The Spec
• 80 / 443 (plain/secure)
  • No Proxy/Firewall pains
• Stream of Messages (Not Bytes)
• ws:// & wss://
• Only ONE Connection (up/down streams)
Still Why?
2 Bytes Header            1000 x
     (for each message)




~ 50 ms (Latency)          3x
1 Message/Second per Client




  1,000 clients   10,000       clients      1,00,000         clients


                  http://www.codeproject.com/Articles/437342/DotNet-WebSocket-Programming
The Upgrade
• GET    (request)



• 101        (response code)

  • Not 200 OK
• http:// -> ws://
Client Request
GET /demo HTTP/1.1
Origin                 : http://sivaa.in
Host                   : sivaa.in

Connection             : Upgrade
Upgrade                : WebSocket
WebSocket-Protocol     : json, chat, <protocol>
WebSocket-Version      : 10
WebSocket-extensions   : compression, <extn>
Server Response
HTTP/1.1 101 Switching Protocols
 Connection           : Upgrade
 Upgrade              : WebSocket

 WebSocket-Protocol   : json, chat, <protocol>
 WebSocket-Origin     : http://sivaa.in
 WebSocket-Location   : ws://sivaa.in/demo
Challenge - Response
Challenge by Client
     Sec-WebSocket-Key : Key (Random 128 bits -> Base 64)

Response By Server
     Sec-WebSocket-Accept : Key + GUID* (SHA1)


                     [NOT FOR SECURITY]
* 258EAFA5-E914-47DA- 95CA-C5AB0DC85B11 (RFC 6455)
Client / Server


Peer <-> Peer
Data Transfer
• Frames (TCP)
•




• No request / response behavior
    •   No Correlation too
    •   Independent
    •   # of requests   !=   # of responses
And No
    • Headers
    • Cookies
    • Authentication
Sub Protocols
• Custom Message Patterns
• Technical / Business
• Request / Response
 •   1–1
 •   1 to Many
 •   Acknowledgements
Ping / Pong
•   Keep-Alive          Client -> Ping
•   Heart Beat          Server -> Pong
•   Latency Metrics
•   N/W Status Probing
•   Detect Failed Connections
Browser Support




       http://caniuse.com/#feat=websockets
IDL (Java Script)

Server Support



              http://www.w3.org/TR/websockets/
http://www.w3.org/TR/websockets/
http://www.w3.org/TR/websockets/
http://www.w3.org/TR/websockets/
http://www.w3.org/TR/websockets/
Developer Friendly
1.     var ws = new WebSocket("ws://sivaa.in/demo");
                                                       CONNECTING
2.     ws.onopen = function() {
           ws.send("Hello Server!");
                                     OPEN
       };

3.     ws.onmessage = function(event) {
           alert("Reply from Server " + event.data);
       };

n-1.   ws.send("This is the message sent by the client");

n.     ws.close()   CLOSING

        CLOSED
The Guards
             (Proxy / Firewall)



• Closing Long Lived Connections
  • Unresponsive Server
• Buffering Server Response
  • Non Encryption
  • More Latency
Web Sockets and
                 The Guards
• Web Sockets doesn’t Proxy
• Stripping HTTP Headers
    •   Upgrade
    •   Options to disable
•   Rejecting Server Response
    •   Frames (HTTP Headers Expected)
•   wss:// - No issues
The Hidden Blades
• 301
• Limited Support
• Inconsistent Behavior
Java EE 7 & Web Socket
• JSR 356
• Java EE 7
• Tyrus ( http://tyrus.java.net/ )


  • Web Socket SDK
  • Reference Implementation
Server Side Capabilities
             (Expected)

 •   Handshake Response to Clients
 •   Source/Origin Check
 •   URI Resolving & Matching
 •   Sub Protocols Negotiation
 •   Extension Negotiation
Handlers
•   End point (to handle life cycle events)
•   Session (Current Active Session)
•   Remote End Point (Peer)
•   Message Handler (incoming messages)
•   Error Handler
Packages
• javax.websocket.*
• javax.net.websocket.*

http://java.net/projects/websocket-spec/sources/source-code-
repository/show/tags/javax.net.websocket-api-1.0-b08/src/main/java?rev=213
Web Server Support
•   Apache Tomcat 7
•   GlassFish 3.1
•   Jetty 7
•   JBoss 7
•   And much more
GlassFish
•   Annotations
•   Reference Implementation
•   Web Sockets SDK / mvn
•   Samples to Begin with
Demo
• GlassFish Promoted Build
•   # svn checkout https://svn.java.net/svn/websocket-sdk~source-code-repository
•   # mvn clean install (in websocket-sdk~source-code-repositorytrunksamples)

• Import in Latest Net Beans
• Run it
Thank You!
            siva@sivaa.in
bit.ly/sivaa_in      bit.ly/sivasubramaniam
References
•   http://www.inc.com/ss/brief-history-time-management#7
•   http://resources3.news.com.au/images/2013/01/30/1226564/845955-tim-berners-lee.jpg
•   http://netdna.webdesignerdepot.com/uploads/2009/01/macii.jpg#old%20apple%20computer%20559x450
•   http://3.bp.blogspot.com/_zVkfb2MIt4A/S8f_qzhuhRI/AAAAAAAAAjg/2idf7_G4wxo/s1600/apple-imac.png
•   http://www.softwareforeducation.com/wikileki/images/c/c4/Simplex-half-full.gif
•   http://www.mediafly.com/wp-content/uploads/Speed_Rocket-2.png
•   http://weaponsman.com/wp-content/uploads/2013/01/thumbs-down.png
•   http://m.flikie.com/ImageData/WallPapers/d1bef9f8be6d479387953929c766699a.jpg
•   http://www.tavendo.de/webmq/resources/faq
•   http://deadliestwebattacks.com/tag/websocket/
•   http://en.wikipedia.org/wiki/WebSocket
•   http://www.infoq.com/articles/Web-Sockets-Proxy-Servers

Mais conteúdo relacionado

Mais procurados

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
 
Jetty Continuation - 이상민
Jetty Continuation - 이상민Jetty Continuation - 이상민
Jetty Continuation - 이상민JavaCommunity.Org
 
Life on the Edge with ESI
Life on the Edge with ESILife on the Edge with ESI
Life on the Edge with ESIKit Chan
 
Great Java Application Server Debate
Great Java Application Server DebateGreat Java Application Server Debate
Great Java Application Server DebateHamed Hatami
 
Do We Need Containers Anyway?
Do We Need Containers Anyway?Do We Need Containers Anyway?
Do We Need Containers Anyway?Dmitry Buzdin
 
Jetty 9 – The Next Generation Servlet Container
Jetty 9 – The Next Generation Servlet ContainerJetty 9 – The Next Generation Servlet Container
Jetty 9 – The Next Generation Servlet ContainerCodemotion
 
IBM Think 2018 - IBM Connections Troubleshooting
IBM Think 2018 -  IBM Connections TroubleshootingIBM Think 2018 -  IBM Connections Troubleshooting
IBM Think 2018 - IBM Connections TroubleshootingNico Meisenzahl
 
HTTP 2.0 – What do I need to know?
HTTP 2.0 – What do I need to know? HTTP 2.0 – What do I need to know?
HTTP 2.0 – What do I need to know? Sigma Software
 
Webinar: IBM Connections Adminblast
Webinar: IBM Connections AdminblastWebinar: IBM Connections Adminblast
Webinar: IBM Connections AdminblastNico Meisenzahl
 
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) Hackable
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) HackableCollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) Hackable
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) HackableDarren Duke
 
HTML5 WebSocket: The New Network Stack for the Web
HTML5 WebSocket: The New Network Stack for the WebHTML5 WebSocket: The New Network Stack for the Web
HTML5 WebSocket: The New Network Stack for the WebPeter Lubbers
 
vlavrynovych - WebSockets Presentation
vlavrynovych - WebSockets Presentationvlavrynovych - WebSockets Presentation
vlavrynovych - WebSockets PresentationVolodymyr Lavrynovych
 
Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014Arun Gupta
 
Nexcess Magento Imagine 2014 Performance Breakout
Nexcess Magento Imagine 2014 Performance BreakoutNexcess Magento Imagine 2014 Performance Breakout
Nexcess Magento Imagine 2014 Performance BreakoutNexcess.net LLC
 
Websocket protocol overview
Websocket protocol overviewWebsocket protocol overview
Websocket protocol overviewallenmeng
 

Mais procurados (20)

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
 
Jetty Continuation - 이상민
Jetty Continuation - 이상민Jetty Continuation - 이상민
Jetty Continuation - 이상민
 
Life on the Edge with ESI
Life on the Edge with ESILife on the Edge with ESI
Life on the Edge with ESI
 
Great Java Application Server Debate
Great Java Application Server DebateGreat Java Application Server Debate
Great Java Application Server Debate
 
Do We Need Containers Anyway?
Do We Need Containers Anyway?Do We Need Containers Anyway?
Do We Need Containers Anyway?
 
Jetty 9 – The Next Generation Servlet Container
Jetty 9 – The Next Generation Servlet ContainerJetty 9 – The Next Generation Servlet Container
Jetty 9 – The Next Generation Servlet Container
 
HTML5 WebSockets
HTML5 WebSocketsHTML5 WebSockets
HTML5 WebSockets
 
SPDY
SPDYSPDY
SPDY
 
IBM Think 2018 - IBM Connections Troubleshooting
IBM Think 2018 -  IBM Connections TroubleshootingIBM Think 2018 -  IBM Connections Troubleshooting
IBM Think 2018 - IBM Connections Troubleshooting
 
HTTP 2.0 – What do I need to know?
HTTP 2.0 – What do I need to know? HTTP 2.0 – What do I need to know?
HTTP 2.0 – What do I need to know?
 
The HTML5 WebSocket API
The HTML5 WebSocket APIThe HTML5 WebSocket API
The HTML5 WebSocket API
 
Webinar: IBM Connections Adminblast
Webinar: IBM Connections AdminblastWebinar: IBM Connections Adminblast
Webinar: IBM Connections Adminblast
 
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) Hackable
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) HackableCollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) Hackable
CollabSphere SC 103 : Domino on the Web : Yes, It's (Probably) Hackable
 
HTML5 WebSocket: The New Network Stack for the Web
HTML5 WebSocket: The New Network Stack for the WebHTML5 WebSocket: The New Network Stack for the Web
HTML5 WebSocket: The New Network Stack for the Web
 
vlavrynovych - WebSockets Presentation
vlavrynovych - WebSockets Presentationvlavrynovych - WebSockets Presentation
vlavrynovych - WebSockets Presentation
 
SPDY - or maybe HTTP2.0
SPDY - or maybe HTTP2.0SPDY - or maybe HTTP2.0
SPDY - or maybe HTTP2.0
 
Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014Java EE 7 Soup to Nuts at JavaOne 2014
Java EE 7 Soup to Nuts at JavaOne 2014
 
Nexcess Magento Imagine 2014 Performance Breakout
Nexcess Magento Imagine 2014 Performance BreakoutNexcess Magento Imagine 2014 Performance Breakout
Nexcess Magento Imagine 2014 Performance Breakout
 
Intro to WebSockets
Intro to WebSocketsIntro to WebSockets
Intro to WebSockets
 
Websocket protocol overview
Websocket protocol overviewWebsocket protocol overview
Websocket protocol overview
 

Destaque

cloud conference 2013 - Infrastructure as a Service in Amazon Web Services
cloud conference 2013 - Infrastructure as a Service in Amazon Web Servicescloud conference 2013 - Infrastructure as a Service in Amazon Web Services
cloud conference 2013 - Infrastructure as a Service in Amazon Web ServicesVMEngine
 
Getting Started with WebGL
Getting Started with WebGLGetting Started with WebGL
Getting Started with WebGLChihoon Byun
 
Web gl game development
Web gl game developmentWeb gl game development
Web gl game developmentwebglgame
 
Open stack implementation
Open stack implementation Open stack implementation
Open stack implementation Soumyajit Basu
 
Open Stack vs .NET Stack - For Startups
Open Stack vs .NET Stack - For StartupsOpen Stack vs .NET Stack - For Startups
Open Stack vs .NET Stack - For StartupsBryan Starbuck
 
Module 4: NETCONF Tutorial
Module 4: NETCONF Tutorial Module 4: NETCONF Tutorial
Module 4: NETCONF Tutorial Tail-f Systems
 
Amazon Web Service EC2 & S3
Amazon Web Service EC2 & S3Amazon Web Service EC2 & S3
Amazon Web Service EC2 & S3Pravin Vaja
 
OpenGLES - Graphics Programming in Android
OpenGLES - Graphics Programming in Android OpenGLES - Graphics Programming in Android
OpenGLES - Graphics Programming in Android Arvind Devaraj
 
Introduction to WebSockets Presentation
Introduction to WebSockets PresentationIntroduction to WebSockets Presentation
Introduction to WebSockets PresentationJulien LaPointe
 
Initial presentation of openstack (for montreal user group)
Initial presentation of openstack (for montreal user group)Initial presentation of openstack (for montreal user group)
Initial presentation of openstack (for montreal user group)Marcos García
 
Introduction to .net framework
Introduction to .net frameworkIntroduction to .net framework
Introduction to .net frameworkArun Prasad
 

Destaque (17)

cloud conference 2013 - Infrastructure as a Service in Amazon Web Services
cloud conference 2013 - Infrastructure as a Service in Amazon Web Servicescloud conference 2013 - Infrastructure as a Service in Amazon Web Services
cloud conference 2013 - Infrastructure as a Service in Amazon Web Services
 
Getting Started with WebGL
Getting Started with WebGLGetting Started with WebGL
Getting Started with WebGL
 
Web gl game development
Web gl game developmentWeb gl game development
Web gl game development
 
WebGL and three.js
WebGL and three.jsWebGL and three.js
WebGL and three.js
 
Open stack implementation
Open stack implementation Open stack implementation
Open stack implementation
 
Open Stack vs .NET Stack - For Startups
Open Stack vs .NET Stack - For StartupsOpen Stack vs .NET Stack - For Startups
Open Stack vs .NET Stack - For Startups
 
Open gl
Open glOpen gl
Open gl
 
Module 4: NETCONF Tutorial
Module 4: NETCONF Tutorial Module 4: NETCONF Tutorial
Module 4: NETCONF Tutorial
 
Amazon Web Service EC2 & S3
Amazon Web Service EC2 & S3Amazon Web Service EC2 & S3
Amazon Web Service EC2 & S3
 
OpenGLES - Graphics Programming in Android
OpenGLES - Graphics Programming in Android OpenGLES - Graphics Programming in Android
OpenGLES - Graphics Programming in Android
 
Introduction to WebSockets Presentation
Introduction to WebSockets PresentationIntroduction to WebSockets Presentation
Introduction to WebSockets Presentation
 
Geometría lineal
Geometría linealGeometría lineal
Geometría lineal
 
Distributed computing
Distributed computingDistributed computing
Distributed computing
 
Distributed Computing
Distributed ComputingDistributed Computing
Distributed Computing
 
Initial presentation of openstack (for montreal user group)
Initial presentation of openstack (for montreal user group)Initial presentation of openstack (for montreal user group)
Initial presentation of openstack (for montreal user group)
 
Introduction to .net framework
Introduction to .net frameworkIntroduction to .net framework
Introduction to .net framework
 
Distributed Computing
Distributed ComputingDistributed Computing
Distributed Computing
 

Semelhante a Web Sockets in Java EE 7

JUDCon 2013- JBoss Data Grid and WebSockets: Delivering Real Time Push at Scale
JUDCon 2013- JBoss Data Grid and WebSockets: Delivering Real Time Push at ScaleJUDCon 2013- JBoss Data Grid and WebSockets: Delivering Real Time Push at Scale
JUDCon 2013- JBoss Data Grid and WebSockets: Delivering Real Time Push at ScaleC2B2 Consulting
 
Stack Exchange Infrastructure - LISA 14
Stack Exchange Infrastructure - LISA 14Stack Exchange Infrastructure - LISA 14
Stack Exchange Infrastructure - LISA 14GABeech
 
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...Aman Kohli
 
XMPP/Jingle(VoIP)/Perl Ocean 2012/03
XMPP/Jingle(VoIP)/Perl Ocean 2012/03XMPP/Jingle(VoIP)/Perl Ocean 2012/03
XMPP/Jingle(VoIP)/Perl Ocean 2012/03Lyo Kato
 
Data power v7 update - Ravi Katikala
Data power v7 update - Ravi KatikalaData power v7 update - Ravi Katikala
Data power v7 update - Ravi Katikalafloridawusergroup
 
Implementación de tfs 2010 en entornos complejos (cómo y por qué) v03
Implementación de tfs 2010 en entornos complejos (cómo y por qué) v03Implementación de tfs 2010 en entornos complejos (cómo y por qué) v03
Implementación de tfs 2010 en entornos complejos (cómo y por qué) v03Diego Ferreyra
 
Always on in sql server 2017
Always on in sql server 2017Always on in sql server 2017
Always on in sql server 2017Gianluca Hotz
 
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...Edward Burns
 
Accelerating and Securing your Applications in AWS. In-depth look at Solving ...
Accelerating and Securing your Applications in AWS. In-depth look at Solving ...Accelerating and Securing your Applications in AWS. In-depth look at Solving ...
Accelerating and Securing your Applications in AWS. In-depth look at Solving ...Amazon Web Services
 
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...NGINX, Inc.
 
Vert.x – The problem of real-time data binding
Vert.x – The problem of real-time data bindingVert.x – The problem of real-time data binding
Vert.x – The problem of real-time data bindingAlex Derkach
 
sbt server (LSP discussion, 2018 Jan)
sbt server (LSP discussion, 2018 Jan)sbt server (LSP discussion, 2018 Jan)
sbt server (LSP discussion, 2018 Jan)Eugene Yokota
 
The Real World - Plugging the Enterprise Into It (nodejs)
The Real World - Plugging  the Enterprise Into It (nodejs)The Real World - Plugging  the Enterprise Into It (nodejs)
The Real World - Plugging the Enterprise Into It (nodejs)Aman Kohli
 
Art and Science of Web Sites Performance: A Front-end Approach
Art and Science of Web Sites Performance: A Front-end ApproachArt and Science of Web Sites Performance: A Front-end Approach
Art and Science of Web Sites Performance: A Front-end ApproachJiang Zhu
 

Semelhante a Web Sockets in Java EE 7 (20)

JUDCon 2013- JBoss Data Grid and WebSockets: Delivering Real Time Push at Scale
JUDCon 2013- JBoss Data Grid and WebSockets: Delivering Real Time Push at ScaleJUDCon 2013- JBoss Data Grid and WebSockets: Delivering Real Time Push at Scale
JUDCon 2013- JBoss Data Grid and WebSockets: Delivering Real Time Push at Scale
 
Stack Exchange Infrastructure - LISA 14
Stack Exchange Infrastructure - LISA 14Stack Exchange Infrastructure - LISA 14
Stack Exchange Infrastructure - LISA 14
 
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
DSLing your System For Scalability Testing Using Gatling - Dublin Scala User ...
 
XMPP/Jingle(VoIP)/Perl Ocean 2012/03
XMPP/Jingle(VoIP)/Perl Ocean 2012/03XMPP/Jingle(VoIP)/Perl Ocean 2012/03
XMPP/Jingle(VoIP)/Perl Ocean 2012/03
 
Data power v7 update - Ravi Katikala
Data power v7 update - Ravi KatikalaData power v7 update - Ravi Katikala
Data power v7 update - Ravi Katikala
 
Implementación de tfs 2010 en entornos complejos (cómo y por qué) v03
Implementación de tfs 2010 en entornos complejos (cómo y por qué) v03Implementación de tfs 2010 en entornos complejos (cómo y por qué) v03
Implementación de tfs 2010 en entornos complejos (cómo y por qué) v03
 
Always on in sql server 2017
Always on in sql server 2017Always on in sql server 2017
Always on in sql server 2017
 
Alwayson in sqlserver2017
Alwayson in sqlserver2017Alwayson in sqlserver2017
Alwayson in sqlserver2017
 
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
HTTP/2 Comes to Java: Servlet 4.0 and what it means for the Java/Jakarta EE e...
 
computer networking
computer networkingcomputer networking
computer networking
 
Accelerating and Securing your Applications in AWS. In-depth look at Solving ...
Accelerating and Securing your Applications in AWS. In-depth look at Solving ...Accelerating and Securing your Applications in AWS. In-depth look at Solving ...
Accelerating and Securing your Applications in AWS. In-depth look at Solving ...
 
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
Session: A Reference Architecture for Running Modern APIs with NGINX Unit and...
 
Vert.x – The problem of real-time data binding
Vert.x – The problem of real-time data bindingVert.x – The problem of real-time data binding
Vert.x – The problem of real-time data binding
 
Devoxx 2013, WildFly BOF
Devoxx 2013, WildFly BOFDevoxx 2013, WildFly BOF
Devoxx 2013, WildFly BOF
 
Http2 in practice
Http2 in practiceHttp2 in practice
Http2 in practice
 
sbt server (LSP discussion, 2018 Jan)
sbt server (LSP discussion, 2018 Jan)sbt server (LSP discussion, 2018 Jan)
sbt server (LSP discussion, 2018 Jan)
 
The Real World - Plugging the Enterprise Into It (nodejs)
The Real World - Plugging  the Enterprise Into It (nodejs)The Real World - Plugging  the Enterprise Into It (nodejs)
The Real World - Plugging the Enterprise Into It (nodejs)
 
Art and Science of Web Sites Performance: A Front-end Approach
Art and Science of Web Sites Performance: A Front-end ApproachArt and Science of Web Sites Performance: A Front-end Approach
Art and Science of Web Sites Performance: A Front-end Approach
 
SPDY Talk
SPDY TalkSPDY Talk
SPDY Talk
 
Building real-time-collaborative-web-applications
Building real-time-collaborative-web-applicationsBuilding real-time-collaborative-web-applications
Building real-time-collaborative-web-applications
 

Mais de Siva Arunachalam

Introduction to EDI(Electronic Data Interchange)
Introduction to EDI(Electronic Data Interchange)Introduction to EDI(Electronic Data Interchange)
Introduction to EDI(Electronic Data Interchange)Siva Arunachalam
 
Introduction to logging in django
Introduction to logging in djangoIntroduction to logging in django
Introduction to logging in djangoSiva Arunachalam
 
Introduction to Test Driven Development
Introduction to Test Driven DevelopmentIntroduction to Test Driven Development
Introduction to Test Driven DevelopmentSiva Arunachalam
 
Setup a New Virtualenv for Django in Windows
Setup a New Virtualenv for Django in WindowsSetup a New Virtualenv for Django in Windows
Setup a New Virtualenv for Django in WindowsSiva Arunachalam
 
Introduction to Browser Internals
Introduction to Browser InternalsIntroduction to Browser Internals
Introduction to Browser InternalsSiva Arunachalam
 
Python for High School Programmers
Python for High School ProgrammersPython for High School Programmers
Python for High School ProgrammersSiva Arunachalam
 
Introduction to Cloud Computing
Introduction to Cloud ComputingIntroduction to Cloud Computing
Introduction to Cloud ComputingSiva Arunachalam
 
Simplify AJAX using jQuery
Simplify AJAX using jQuerySimplify AJAX using jQuery
Simplify AJAX using jQuerySiva Arunachalam
 
Introduction to Browser DOM
Introduction to Browser DOMIntroduction to Browser DOM
Introduction to Browser DOMSiva Arunachalam
 
Installing MySQL for Python
Installing MySQL for PythonInstalling MySQL for Python
Installing MySQL for PythonSiva Arunachalam
 
Using Eclipse and Installing PyDev
Using Eclipse and Installing PyDevUsing Eclipse and Installing PyDev
Using Eclipse and Installing PyDevSiva Arunachalam
 
Installing Python 2.7 in Windows
Installing Python 2.7 in WindowsInstalling Python 2.7 in Windows
Installing Python 2.7 in WindowsSiva Arunachalam
 
Setup a New Virtualenv for Django in Windows
Setup a New Virtualenv for Django in WindowsSetup a New Virtualenv for Django in Windows
Setup a New Virtualenv for Django in WindowsSiva Arunachalam
 
Introduction to Google APIs
Introduction to Google APIsIntroduction to Google APIs
Introduction to Google APIsSiva Arunachalam
 

Mais de Siva Arunachalam (17)

Introduction to EDI(Electronic Data Interchange)
Introduction to EDI(Electronic Data Interchange)Introduction to EDI(Electronic Data Interchange)
Introduction to EDI(Electronic Data Interchange)
 
Introduction to logging in django
Introduction to logging in djangoIntroduction to logging in django
Introduction to logging in django
 
Introduction to Test Driven Development
Introduction to Test Driven DevelopmentIntroduction to Test Driven Development
Introduction to Test Driven Development
 
Setup a New Virtualenv for Django in Windows
Setup a New Virtualenv for Django in WindowsSetup a New Virtualenv for Django in Windows
Setup a New Virtualenv for Django in Windows
 
What's New in Django 1.6
What's New in Django 1.6What's New in Django 1.6
What's New in Django 1.6
 
Introduction to Browser Internals
Introduction to Browser InternalsIntroduction to Browser Internals
Introduction to Browser Internals
 
Python for High School Programmers
Python for High School ProgrammersPython for High School Programmers
Python for High School Programmers
 
Introduction to Cloud Computing
Introduction to Cloud ComputingIntroduction to Cloud Computing
Introduction to Cloud Computing
 
Simplify AJAX using jQuery
Simplify AJAX using jQuerySimplify AJAX using jQuery
Simplify AJAX using jQuery
 
Introduction to Browser DOM
Introduction to Browser DOMIntroduction to Browser DOM
Introduction to Browser DOM
 
jQuery for beginners
jQuery for beginnersjQuery for beginners
jQuery for beginners
 
Installing MySQL for Python
Installing MySQL for PythonInstalling MySQL for Python
Installing MySQL for Python
 
Using Eclipse and Installing PyDev
Using Eclipse and Installing PyDevUsing Eclipse and Installing PyDev
Using Eclipse and Installing PyDev
 
Installing Python 2.7 in Windows
Installing Python 2.7 in WindowsInstalling Python 2.7 in Windows
Installing Python 2.7 in Windows
 
Setup a New Virtualenv for Django in Windows
Setup a New Virtualenv for Django in WindowsSetup a New Virtualenv for Django in Windows
Setup a New Virtualenv for Django in Windows
 
Introduction to Google APIs
Introduction to Google APIsIntroduction to Google APIs
Introduction to Google APIs
 
Introduction to Django
Introduction to DjangoIntroduction to Django
Introduction to Django
 

Último

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
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
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsMaria Levchenko
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking MenDelhi Call girls
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024The Digital Insurer
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slidespraypatel2
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Enterprise Knowledge
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Drew Madelung
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationSafe Software
 
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
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024Results
 
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
 
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
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
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
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonetsnaman860154
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...apidays
 

Último (20)

Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
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
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men08448380779 Call Girls In Civil Lines Women Seeking Men
08448380779 Call Girls In Civil Lines Women Seeking Men
 
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
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
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
 
Slack Application Development 101 Slides
Slack Application Development 101 SlidesSlack Application Development 101 Slides
Slack Application Development 101 Slides
 
Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...Driving Behavioral Change for Information Management through Data-Driven Gree...
Driving Behavioral Change for Information Management through Data-Driven Gree...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time AutomationFrom Event to Action: Accelerate Your Decision Making with Real-Time Automation
From Event to Action: Accelerate Your Decision Making with Real-Time Automation
 
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
 
A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024A Call to Action for Generative AI in 2024
A Call to Action for Generative AI in 2024
 
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
 
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
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
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
 
How to convert PDF to text with Nanonets
How to convert PDF to text with NanonetsHow to convert PDF to text with Nanonets
How to convert PDF to text with Nanonets
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 

Web Sockets in Java EE 7

  • 1. Java Day Web Sockets in Java EE 7 February 23, 2013 Sivasubramaniam Arunachalam @sivaa_in http://www.meetup.com/BangaloreOpenJUG/events/102904102/
  • 2. It’s me! • Application Developer • Web/Enterprise/Middleware/B2B • Java/Java EE, Python/Django • 2002 • Technical Consultant • Process Mentor • Speaker
  • 3. Agenda • Introduction to Web Sockets • History • Protocol Spec • Adoption • Java EE 7 Support • Demo
  • 5. Web 1.0 Web 2.0 Web 3.0 Web 4.0
  • 6. 600+ M Active Users/Day https://www.facebook.com/sitetour/chat.php
  • 7. 1991 http:// 1995 Still 22 Years Old 2013 http?
  • 8. http/tcp (1991) (1974) request / response State less ~ 2k bytes ~ 150 ms
  • 9. ~ Real Time
  • 10. Pull Based (Polling) Periodic Polling (JS/AJAX) Latest Score? AUS 312/7 Latest Score? Same Latest Score? Same Server Client Latest Score? AUS 316/7 Latest Score? Same
  • 11. Push Based (Comet) Server Push/Long Polling (JS/AJAX/iframe) Latest Score? AUS 312/7 Latest Score? Server Client AUS 316/7 Latest Score?
  • 12. • Request / Response • Too Many • Server Connections • Heavy Headers • Outdated Content
  • 13. Streaming Server Side Hack Latest Score? AUS 312/7 (1/n) Server Client AUS 316/7 (2/n) IND 0/0 (n/n)
  • 14. Latest Score? (1/n) AUS 312/7 (n-1 to go) Server Server Buffer Client AUS 316/7 (2/n) AUS 312/7 (n-2 to go) AUS 316/7 IND 0/0 IND 0/0 (n/n) PROXY
  • 15. Others • RTMP • Adobe • Are you Still using Flash? • RTD • Windows/Excel • Non Web
  • 16. Web Sockets (to rescue)
  • 17. The Web Socket Way The Original Route Hey Server! Hi Client! Update me the Score AUS 312/7 Server Client AUS 316/7 IND 0/0 Not Interested. Bye
  • 18. Hey Server! Hi Client! Update me the Score AUS 312/7 Update Over info too (93.0 ov) Server (94.0 ov) Client AUS 316/7 (95.0 ov) IND 0/0 (0.0 ov) Not Interested. Bye
  • 20. Let’s Meet Next Year (2014) http://www.tavendo.de/webmq/resources/faq
  • 21. Server Side Client Side • Hand Shake • Java Script API • Data Transfer • Browser Behavior RFC 6455 http://www.tavendo.de/webmq/resources/faq
  • 22. Fundamentals • tcp + http • Full Duplex (Bi-Directional) • Native Browser Support • No Hacks • Not Limited to Web
  • 23. The Spec • 80 / 443 (plain/secure) • No Proxy/Firewall pains • Stream of Messages (Not Bytes) • ws:// & wss:// • Only ONE Connection (up/down streams)
  • 24. Still Why? 2 Bytes Header 1000 x (for each message) ~ 50 ms (Latency) 3x
  • 25. 1 Message/Second per Client 1,000 clients 10,000 clients 1,00,000 clients http://www.codeproject.com/Articles/437342/DotNet-WebSocket-Programming
  • 26. The Upgrade • GET (request) • 101 (response code) • Not 200 OK • http:// -> ws://
  • 27. Client Request GET /demo HTTP/1.1 Origin : http://sivaa.in Host : sivaa.in Connection : Upgrade Upgrade : WebSocket WebSocket-Protocol : json, chat, <protocol> WebSocket-Version : 10 WebSocket-extensions : compression, <extn>
  • 28. Server Response HTTP/1.1 101 Switching Protocols Connection : Upgrade Upgrade : WebSocket WebSocket-Protocol : json, chat, <protocol> WebSocket-Origin : http://sivaa.in WebSocket-Location : ws://sivaa.in/demo
  • 29. Challenge - Response Challenge by Client Sec-WebSocket-Key : Key (Random 128 bits -> Base 64) Response By Server Sec-WebSocket-Accept : Key + GUID* (SHA1) [NOT FOR SECURITY] * 258EAFA5-E914-47DA- 95CA-C5AB0DC85B11 (RFC 6455)
  • 31. Data Transfer • Frames (TCP) • • No request / response behavior • No Correlation too • Independent • # of requests != # of responses
  • 32. And No • Headers • Cookies • Authentication
  • 33. Sub Protocols • Custom Message Patterns • Technical / Business • Request / Response • 1–1 • 1 to Many • Acknowledgements
  • 34. Ping / Pong • Keep-Alive Client -> Ping • Heart Beat Server -> Pong • Latency Metrics • N/W Status Probing • Detect Failed Connections
  • 35. Browser Support http://caniuse.com/#feat=websockets
  • 36. IDL (Java Script) Server Support http://www.w3.org/TR/websockets/
  • 41. Developer Friendly 1. var ws = new WebSocket("ws://sivaa.in/demo"); CONNECTING 2. ws.onopen = function() { ws.send("Hello Server!"); OPEN }; 3. ws.onmessage = function(event) { alert("Reply from Server " + event.data); }; n-1. ws.send("This is the message sent by the client"); n. ws.close() CLOSING CLOSED
  • 42. The Guards (Proxy / Firewall) • Closing Long Lived Connections • Unresponsive Server • Buffering Server Response • Non Encryption • More Latency
  • 43. Web Sockets and The Guards • Web Sockets doesn’t Proxy • Stripping HTTP Headers • Upgrade • Options to disable • Rejecting Server Response • Frames (HTTP Headers Expected) • wss:// - No issues
  • 44. The Hidden Blades • 301 • Limited Support • Inconsistent Behavior
  • 45. Java EE 7 & Web Socket • JSR 356 • Java EE 7 • Tyrus ( http://tyrus.java.net/ ) • Web Socket SDK • Reference Implementation
  • 46. Server Side Capabilities (Expected) • Handshake Response to Clients • Source/Origin Check • URI Resolving & Matching • Sub Protocols Negotiation • Extension Negotiation
  • 47. Handlers • End point (to handle life cycle events) • Session (Current Active Session) • Remote End Point (Peer) • Message Handler (incoming messages) • Error Handler
  • 49. Web Server Support • Apache Tomcat 7 • GlassFish 3.1 • Jetty 7 • JBoss 7 • And much more
  • 50. GlassFish • Annotations • Reference Implementation • Web Sockets SDK / mvn • Samples to Begin with
  • 51. Demo • GlassFish Promoted Build • # svn checkout https://svn.java.net/svn/websocket-sdk~source-code-repository • # mvn clean install (in websocket-sdk~source-code-repositorytrunksamples) • Import in Latest Net Beans • Run it
  • 52. Thank You! siva@sivaa.in bit.ly/sivaa_in bit.ly/sivasubramaniam
  • 53. References • http://www.inc.com/ss/brief-history-time-management#7 • http://resources3.news.com.au/images/2013/01/30/1226564/845955-tim-berners-lee.jpg • http://netdna.webdesignerdepot.com/uploads/2009/01/macii.jpg#old%20apple%20computer%20559x450 • http://3.bp.blogspot.com/_zVkfb2MIt4A/S8f_qzhuhRI/AAAAAAAAAjg/2idf7_G4wxo/s1600/apple-imac.png • http://www.softwareforeducation.com/wikileki/images/c/c4/Simplex-half-full.gif • http://www.mediafly.com/wp-content/uploads/Speed_Rocket-2.png • http://weaponsman.com/wp-content/uploads/2013/01/thumbs-down.png • http://m.flikie.com/ImageData/WallPapers/d1bef9f8be6d479387953929c766699a.jpg • http://www.tavendo.de/webmq/resources/faq • http://deadliestwebattacks.com/tag/websocket/ • http://en.wikipedia.org/wiki/WebSocket • http://www.infoq.com/articles/Web-Sockets-Proxy-Servers