SlideShare a Scribd company logo
html 5 websockets
Florin Cardașim, twitter.com/@cardasim
Endava

26 nov 2011
Agenda
 Real-time web         SSE,                Q&A
                       WebSockets




        Demo:                  Demo: WebSockets in
        long polling           Windows 8, ASP.NET
                               & WCF 4.5
How do we implement real-time
web?
periodic ajax polling
comet/long polling/http streaming …
flash/javafx/silverlight

html5 server-sent events
html5 web sockets
Polling
Browser    connect   Server
           no
           message
           connect
           no
                      event
           message
           connect
           event
           connect
           no
           message
           connect
           no         event
           message
           connect
            event
Polling

No real-time user experience
Wasted bandwidth, most requests return no
 data
Frequent polling determine high server loads
Comet/long polling
Browser                      Server
           connect
                      wait
                              event
            event
           connect
                      wait



                              event
            event
           connect
                      wait
Comet/long polling

Real-time user experience

High number of clients determines high
 pressure on
 bandwidth, memory, threads/processes


DEMO
Html5 server-sent events
Browser                           Server
              open event stream
  <EventSource>

                  event            event
      onmessage
                                   event
                  event
      onmessag
      e                            event
                  event
      onmessag
      e
Html5 server-sent events
Simulates a server push channel over HTTP
Unidirectional, from server to browser
Standardizes some form of Comet/http
 streaming

New html tag: <EventSource>
New mime type: text/event-stream
Html5 WebSockets
                  GET /text HTTP/1.1
Client/Browser    Upgrade: WebSocket
                                                   Server
                  Connection: Upgrade
                  Host: www.websocket.org ...


                 HTTP/1.1 101 WebSocket Protocol
                 Handshake
                 Upgrade: WebSocket ...




                 TCP comm channel
                         Full
                 duplex, bidirectional
Html5 WebSockets
Full duplex, bidirectional
Single TCP socket
Standard ports: http/80, https/443
Bandwidth savings
Higher scalability comparing with Comet
In&outside of browser

IETF WebSockets Communication protocol
W3C WebSockets API
Server side support
 Socket.IO (node.js)              Socket.IO Fallbacks
 Jetty (Java)                        Adobe Flash Socket
 Ruby/EventMachine                   AJAX Long Polling
 Python/Twisted                      AJAX Multipart
                                       Streaming
 Windows 8, IIS 8, ASP.NET-WCF
  4.5                                 Forever iFrame
 … others                            JSONP Polling

                                     http://socket.io/
Browser support
DEMO: WebSockets
@Microsoft
ASP.NET 4.5
WCF 4.5

Windows 8 Developer Preview
IIS 8
ASP.NET 4.5
WCF 4.5
IE 10, Chrome
WebSockets @Microsoft
                      Your code!




           WCF high level
            abstractions
                                          ASP.NET high level
WCF WebSocket transport
                                            abstractions

               System.Net.WebSockets

                                     ASP.NET HTTP Pipeline

      HttpListener                        IIS (iiswsock.dll)

                          http.sys
References
www.websocket.org
www.paulbatum.com
www.kaazing.me
www.html5labs.com
www.buildwindows.com
www.google.com/search?q=websocket
Q&A
Please fill your evaluation form

Thank you!



Florin Cardașim, twitter.com/@cardasim
Endava
26 nov 2011
WebSockets vs Polling bandwidth




 http://websocket.org/quantum.html

More Related Content

Codecamp Iasi-26 nov 2011 - Html 5 WebSockets