SlideShare una empresa de Scribd logo
1 de 76
Descargar para leer sin conexión
Let’s get real (time): Server-Sent
Events,WebSockets and WebRTC for
the soul
A guided tour of modern browser networking
Swanand Pagnis	

swanand@pagnis.in
Yours truly
• Originally from Krypton, often mistaken as the last
survivor	

• Sent to earth in a spaceship while still a baby	

• A few useful superpowers	

• Suspiciously good at hiding in plain sight
Yours truly
• Originally from Krypton, often mistaken as the last
survivor	

• Sent to earth in a spaceship while still a baby	

• A few useful superpowers	

• Suspiciously good at hiding in plain sight
Yours truly
• Bangalore RUG, Mysore RUG, Garden City
RubyConf	

• Hack code at Simplero for a living	

• Twitter @_swanand	

• Github @swanandp
What’s in store for us
1. Why bother ?
What’s in store for us
1. Why bother ?
2. The Zen of RealTime Communication
What’s in store for us
1. Why bother ?
2. The Zen of RealTime Communication
3. Concepts and app Integration with:
What’s in store for us
1. Why bother ?
2. The Zen of RealTime Communication
3. Concepts and app Integration with:
1. SSE
What’s in store for us
1. Why bother ?
2. The Zen of RealTime Communication
3. Concepts and app Integration with:
1. SSE
2. WebSockets
What’s in store for us
1. Why bother ?
2. The Zen of RealTime Communication
3. Concepts and app Integration with:
1. SSE
2. WebSockets
3. WebRTC
What’s in store for us
1. Why bother ?
2. The Zen of RealTime Communication
3. Concepts and app Integration with:
1. SSE
2. WebSockets
3. WebRTC
4. Further reading and open source opportunities
What’s in store for us
Problems with traditional approaches
Why Bother ?
1. Poor performance because of high latency	

2. Neither truly async nor truly real time, often
limited toText transfer only	

3. Either additional complexity and inconvenience
or hacky methods
7
Problems with traditional approaches
The Zen of RealTime
Communication
• Escape from Request-Response cycle	

• Do not be bound to HTTP	

• It may or may not always REST
Also known as the EventSource API
Server-Sent Events
Server-Sent Events : Introduction
12
Server-Sent Events : Introduction
1. Designed for Server to Client
communication
12
Server-Sent Events : Introduction
1. Designed for Server to Client
communication
2. Single long lived connection;
hence low latency
12
Server-Sent Events : Introduction
1. Designed for Server to Client
communication
2. Single long lived connection;
hence low latency
3. Simple cross browser API
12
Server-Sent Events : Use cases
• Activity feeds likeTwitter, Facebook,
StockTickers	

• Analytics, Dashboards, Monitoring	

• Chats, Instant Messaging *,
Collaborative editing like Google Docs
13
14
Server-Sent Events :The Browser
Server-Sent Events :The Server
15
Server-Sent Events : Summary
1. Simple Protocol that builds on top of HTTP	

2. Truly async	

3. Perfect for “notifying” the client	

4. Great cross browser support, but no binary
support
16
1. Traditional Rack based app are a slight misfit because
of response buffering ( Remember our first Zen ? )	

2. Evented architecture works in our favour (Think of
EM::Deferrable orThin )	

3. Long running connection means long running
process on the server
Server-Sent Events :App Integration
17
1. ActionController::Live	

2. Sinatra’s Streaming API	

3. Faye	

4. Cramp	

5. Pusher
Server-Sent Events :App Integration
18
1. Streaming and SSE support baked right into Rails
(  4.0 )	

2. You keep the full context ( current_user etc )	

3. Integration friendly, almost a drop-in feature into
existing Rails apps
ActionController::Live
19
EDGE
ActionController::Live
20
Sinatra’s Streaming API
1. You only need Sinatra,
Thin and some Javascript	

2. So simple, you will cry
with happiness	

3. No app context	

4. So simple, you will beg
for more features
Sinatra’s Streaming API
1. You only need Sinatra,
Thin and some Javascript	

2. So simple, you will cry
with happiness	

3. No app context	

4. So simple, you will beg
for more features
Sinatra’s Streaming API
1. Running a separate process that acts as a server, and
your server and client act as clients to this server	

2. Pub / sub model, drop-in integration with your app	

3. Graceful degradation	

4. No app context
Faye +Your App
22
Faye +Your App
Apps that have more traditional components than
real time	

1. Use a separate process / service / app for the
real time part ( e.g. Faye or Pusher or BYOT )	

2. Use existing infrastructure for non real time
aspects of the app
Recommended approach
Rant
24
WebSockets
When Server-Sent Events are just not enough
WebSockets : Introduction
27
WebSockets : Introduction
1. Standalone Bidirectional protocol
27
WebSockets : Introduction
1. Standalone Bidirectional protocol
2. Message oriented, supports events by design
27
WebSockets : Introduction
1. Standalone Bidirectional protocol
2. Message oriented, supports events by design
3. Reliable text and binary transfers
27
WebSockets : Introduction
1. Standalone Bidirectional protocol
2. Message oriented, supports events by design
3. Reliable text and binary transfers
4. HTTP Compatible
27
1. All the use cases of SSEs, plus:	

2. Multiplayer games, Multi-media chat *	

3. Remote pair programming, Online contests, Live
interviews, Screen sharing, Remote Desktop etc.
WebSockets : Use Cases
28
WebSockets :The Browser
WebSockets : Upgrade Handshake
1. Faye +Your app	

2. Cramp +Your app	

3. websocket-rails	

4. em-websocket, em-websocket-rails	

5. Pusher
WebSocket
WebSockets :App Integration
31
Cramp +Your App
32
1. Run Cramp as a standalone app	

2. Provides an app like functionality around RTC	

3. Think of it as Rails for real time apps	

4. No drop-in integration with existing app
Cramp +Your App
33
1. Controller becomes Action	

2. Action becomes Event, triggered with on_data	

3. params become data	

4. Connection open by default
Recommended approach
34
Apps that are heavily real time	

1. Use Cramp to build a stand alone app	

2. Be an API consumer for your other app for any
additional functionality
Rant
http://www.personal.psu.edu/afr3/blogs/siowfa13/yawning.jpg
Modern Day Kazaa, in an Iron Man Suit
WebRTC
WebRTC : Introduction
39
1. Peer-to-peer audio, video, and data sharing
between browsers	

2. Standardised to a JavaScript API	

3. Google Backed
WebRTC : Introduction
40
1. Acquire Audio andVideo data	

2. Communicate Audio andVideo data	

3. Communicate Arbitrary Application Data
WebRTC : Introduction
41
1. MediaStream	

2. RTCPeerConnection	

3. RTCDataChannel
WebRTC : Introduction
42
1. MediaStream	

2. RTCPeerConnection	

3. RTCDataChannel
WebRTC : Typical Workflow - Phase 1
43
WebRTC : Typical Workflow - Phase 1
43
1. Connect to the Signalling Server, let it know:	

1. Your Identity ( STUN )	

2. How to reach you ( ICE Candidate )	

2. Once a peer is detected by the server, it in turns gives you
the above info	

3. At this point, we are ready for a P2P connection
WebRTC : Typical Workflow - Phase 1
Incomplete
Code
WebRTC : Typical Workflow - Phase II
45
WebRTC : Typical Workflow - Phase II
45
1. Create a stream to send and receive binary data	

2. Create a channel to send and receive text data	

3. Actually send and receive data
WebRTC : Typical Workflow - Phase II
– Oscar Wilde
“Consistency is the last refuge of the unimaginative”
WebRTC : Use Cases
48
1. Motherlode of Skype clones, free and open
source!	

2. Screen sharing, remote pairing, multiplayer games,
browser based torrents, Live MOOCs	

3. In reality, this is limited mostly by our imagination
and browser’s computing abilities
WebRTC : Dive in
49
1. Use any of the JavaScript libs / SDKs :	

1. Open Source: SimpleWebRTC, webRTC.io, PeerJS,
EasyRTC, ShareFest	

2. Commercial: PubNub WebRTC SDK	

2. Signalling service example in Ruby	

1. OSS : github.com/palavatv/palava-machine
Further Reading
• HTML5Rocks ( it’s a website, not a collection of
rocks )	

• http://studio.html5rocks.com/	

• WebRTC official website	

• Mozilla Developer Network	

• http://simpl.info/
Websites
• Ilya Grigorik	

• Sam Dutton	

• Paul Irish	

• Eric Bidelman	

• Your own blog, one year from now
Blogs
• High Performance Browser Networking	

• Getting Started with WebRTC	

• HTML5: Up and Running
Books
Open Source
Opportunities
• Help out Faye, Cramp and other libraries
mentioned so far	

• Open source all your throw-away code written
during learning ( Mine is on Github )	

• Async-proof versions of commonly needed ruby
gems ( e.g. github.com/rkh/async-rack )
• Helper Libraries for Cramp, e.g.	

• To easily build simple board games	

• To write calendar based real time apps	

• Augment the testing libraries to test real time stuff	

• Write and make your benchmarks available
ThankYou !
57
Questions ?
58

Más contenido relacionado

La actualidad más candente

Serverless observability - a hero's perspective
Serverless observability - a hero's perspectiveServerless observability - a hero's perspective
Serverless observability - a hero's perspectiveYan Cui
 
Building Fault Tolerant Microservices
Building Fault Tolerant MicroservicesBuilding Fault Tolerant Microservices
Building Fault Tolerant MicroservicesKristoffer Erlandsson
 
Let's not rewrite it all
Let's not rewrite it allLet's not rewrite it all
Let's not rewrite it allMichelle Brush
 
Pulsar for Kafka People
Pulsar for Kafka PeoplePulsar for Kafka People
Pulsar for Kafka PeopleJesse Anderson
 
Realtime html5 multiplayer_games_with_node_js
Realtime html5 multiplayer_games_with_node_jsRealtime html5 multiplayer_games_with_node_js
Realtime html5 multiplayer_games_with_node_jsMario Gonzalez
 
[AWS Dev Day] 이머징 테크 | Libra 소스코드분석 및 AWS에서 블록체인 기반 지불 시스템 최적화 방법 - 박혜영 AWS 솔...
[AWS Dev Day] 이머징 테크 | Libra 소스코드분석 및 AWS에서 블록체인 기반 지불 시스템 최적화 방법 - 박혜영 AWS 솔...[AWS Dev Day] 이머징 테크 | Libra 소스코드분석 및 AWS에서 블록체인 기반 지불 시스템 최적화 방법 - 박혜영 AWS 솔...
[AWS Dev Day] 이머징 테크 | Libra 소스코드분석 및 AWS에서 블록체인 기반 지불 시스템 최적화 방법 - 박혜영 AWS 솔...Amazon Web Services Korea
 
Reactive integrations with Akka Streams
Reactive integrations with Akka StreamsReactive integrations with Akka Streams
Reactive integrations with Akka StreamsKonrad Malawski
 
Monitorama - Please, no more Minutes, Milliseconds, Monoliths or Monitoring T...
Monitorama - Please, no more Minutes, Milliseconds, Monoliths or Monitoring T...Monitorama - Please, no more Minutes, Milliseconds, Monoliths or Monitoring T...
Monitorama - Please, no more Minutes, Milliseconds, Monoliths or Monitoring T...Adrian Cockcroft
 
Interop 2011 - Scaling Platform As A Service
Interop 2011 - Scaling Platform As A ServiceInterop 2011 - Scaling Platform As A Service
Interop 2011 - Scaling Platform As A ServicePatrick Chanezon
 
Beware the potholes
Beware the potholesBeware the potholes
Beware the potholesYan Cui
 
Android push-applications-android
Android push-applications-androidAndroid push-applications-android
Android push-applications-androidwadise
 
Reactive Development: Commands, Actors and Events. Oh My!!
Reactive Development: Commands, Actors and Events.  Oh My!!Reactive Development: Commands, Actors and Events.  Oh My!!
Reactive Development: Commands, Actors and Events. Oh My!!David Hoerster
 
Spring Boot Omakase: A Fast-Paced “Chef’s Choice” Dive into Fun and Useful To...
Spring Boot Omakase: A Fast-Paced “Chef’s Choice” Dive into Fun and Useful To...Spring Boot Omakase: A Fast-Paced “Chef’s Choice” Dive into Fun and Useful To...
Spring Boot Omakase: A Fast-Paced “Chef’s Choice” Dive into Fun and Useful To...VMware Tanzu
 
Automating Zero-Downtime Production Cluster Upgrades for Amazon ECS
Automating Zero-Downtime Production Cluster Upgrades for Amazon ECSAutomating Zero-Downtime Production Cluster Upgrades for Amazon ECS
Automating Zero-Downtime Production Cluster Upgrades for Amazon ECSMatt Callanan
 
Metrics, metrics everywhere (but where the heck do you start?)
Metrics, metrics everywhere (but where the heck do you start?)Metrics, metrics everywhere (but where the heck do you start?)
Metrics, metrics everywhere (but where the heck do you start?)Tammy Everts
 
Data Driven Security, from Gartner Security Summit 2012
Data Driven Security, from Gartner Security Summit 2012Data Driven Security, from Gartner Security Summit 2012
Data Driven Security, from Gartner Security Summit 2012Nick Galbreath
 
Codemotion 2019: A million likes/second: Real-time interactions on Live Video
Codemotion 2019: A million likes/second: Real-time interactions on Live VideoCodemotion 2019: A million likes/second: Real-time interactions on Live Video
Codemotion 2019: A million likes/second: Real-time interactions on Live VideoAkhilesh Gupta
 
Docker Cluster Management with ECS
Docker Cluster Management with ECSDocker Cluster Management with ECS
Docker Cluster Management with ECSMatt Callanan
 

La actualidad más candente (20)

Serverless observability - a hero's perspective
Serverless observability - a hero's perspectiveServerless observability - a hero's perspective
Serverless observability - a hero's perspective
 
Building Fault Tolerant Microservices
Building Fault Tolerant MicroservicesBuilding Fault Tolerant Microservices
Building Fault Tolerant Microservices
 
Let's not rewrite it all
Let's not rewrite it allLet's not rewrite it all
Let's not rewrite it all
 
Pulsar for Kafka People
Pulsar for Kafka PeoplePulsar for Kafka People
Pulsar for Kafka People
 
Realtime html5 multiplayer_games_with_node_js
Realtime html5 multiplayer_games_with_node_jsRealtime html5 multiplayer_games_with_node_js
Realtime html5 multiplayer_games_with_node_js
 
New AWS Services
New AWS ServicesNew AWS Services
New AWS Services
 
[AWS Dev Day] 이머징 테크 | Libra 소스코드분석 및 AWS에서 블록체인 기반 지불 시스템 최적화 방법 - 박혜영 AWS 솔...
[AWS Dev Day] 이머징 테크 | Libra 소스코드분석 및 AWS에서 블록체인 기반 지불 시스템 최적화 방법 - 박혜영 AWS 솔...[AWS Dev Day] 이머징 테크 | Libra 소스코드분석 및 AWS에서 블록체인 기반 지불 시스템 최적화 방법 - 박혜영 AWS 솔...
[AWS Dev Day] 이머징 테크 | Libra 소스코드분석 및 AWS에서 블록체인 기반 지불 시스템 최적화 방법 - 박혜영 AWS 솔...
 
Reactive integrations with Akka Streams
Reactive integrations with Akka StreamsReactive integrations with Akka Streams
Reactive integrations with Akka Streams
 
Monitorama - Please, no more Minutes, Milliseconds, Monoliths or Monitoring T...
Monitorama - Please, no more Minutes, Milliseconds, Monoliths or Monitoring T...Monitorama - Please, no more Minutes, Milliseconds, Monoliths or Monitoring T...
Monitorama - Please, no more Minutes, Milliseconds, Monoliths or Monitoring T...
 
Interop 2011 - Scaling Platform As A Service
Interop 2011 - Scaling Platform As A ServiceInterop 2011 - Scaling Platform As A Service
Interop 2011 - Scaling Platform As A Service
 
Beware the potholes
Beware the potholesBeware the potholes
Beware the potholes
 
Android push-applications-android
Android push-applications-androidAndroid push-applications-android
Android push-applications-android
 
Reactive Development: Commands, Actors and Events. Oh My!!
Reactive Development: Commands, Actors and Events.  Oh My!!Reactive Development: Commands, Actors and Events.  Oh My!!
Reactive Development: Commands, Actors and Events. Oh My!!
 
Spring Boot Omakase: A Fast-Paced “Chef’s Choice” Dive into Fun and Useful To...
Spring Boot Omakase: A Fast-Paced “Chef’s Choice” Dive into Fun and Useful To...Spring Boot Omakase: A Fast-Paced “Chef’s Choice” Dive into Fun and Useful To...
Spring Boot Omakase: A Fast-Paced “Chef’s Choice” Dive into Fun and Useful To...
 
Automating Zero-Downtime Production Cluster Upgrades for Amazon ECS
Automating Zero-Downtime Production Cluster Upgrades for Amazon ECSAutomating Zero-Downtime Production Cluster Upgrades for Amazon ECS
Automating Zero-Downtime Production Cluster Upgrades for Amazon ECS
 
Metrics, metrics everywhere (but where the heck do you start?)
Metrics, metrics everywhere (but where the heck do you start?)Metrics, metrics everywhere (but where the heck do you start?)
Metrics, metrics everywhere (but where the heck do you start?)
 
Data Driven Security, from Gartner Security Summit 2012
Data Driven Security, from Gartner Security Summit 2012Data Driven Security, from Gartner Security Summit 2012
Data Driven Security, from Gartner Security Summit 2012
 
Codemotion 2019: A million likes/second: Real-time interactions on Live Video
Codemotion 2019: A million likes/second: Real-time interactions on Live VideoCodemotion 2019: A million likes/second: Real-time interactions on Live Video
Codemotion 2019: A million likes/second: Real-time interactions on Live Video
 
Docker Cluster Management with ECS
Docker Cluster Management with ECSDocker Cluster Management with ECS
Docker Cluster Management with ECS
 
Svc 202-netflix-open-source
Svc 202-netflix-open-sourceSvc 202-netflix-open-source
Svc 202-netflix-open-source
 

Similar a Let's Get Real (time): Server-Sent Events, WebSockets and WebRTC for the soul

Iot meets Serverless
Iot meets ServerlessIot meets Serverless
Iot meets ServerlessNarendran R
 
Building real time applications with Symfony2
Building real time applications with Symfony2Building real time applications with Symfony2
Building real time applications with Symfony2Antonio Peric-Mazar
 
Asynchrone Echtzeitanwendungen für SharePoint mit SignalR und knockout.js
Asynchrone Echtzeitanwendungen für SharePoint mit SignalR und knockout.jsAsynchrone Echtzeitanwendungen für SharePoint mit SignalR und knockout.js
Asynchrone Echtzeitanwendungen für SharePoint mit SignalR und knockout.jsChristian Heindel
 
Real Time Realitites
Real Time RealititesReal Time Realitites
Real Time Realititesmarkisuak
 
Increasing velocity via serless semantics
Increasing velocity via serless semanticsIncreasing velocity via serless semantics
Increasing velocity via serless semanticsKfir Bloch
 
Best practices of building data streaming API
Best practices of building data streaming APIBest practices of building data streaming API
Best practices of building data streaming APIConstantine Slisenka
 
Chirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterChirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterJohn Adams
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsAlberto González Trastoy
 
Device APIs at TakeOff Conference
Device APIs at TakeOff ConferenceDevice APIs at TakeOff Conference
Device APIs at TakeOff Conferencedianacheng
 
Developing Revolutionary Web Applications using Comet and Ajax Push
Developing Revolutionary Web Applications using Comet and Ajax PushDeveloping Revolutionary Web Applications using Comet and Ajax Push
Developing Revolutionary Web Applications using Comet and Ajax PushDoris Chen
 
Web sockets - Pentesting
Web sockets - Pentesting Web sockets - Pentesting
Web sockets - Pentesting Vandana Verma
 
Silverlight vs HTML5 - Lessons learned from the real world...
Silverlight vs HTML5 - Lessons learned from the real world...Silverlight vs HTML5 - Lessons learned from the real world...
Silverlight vs HTML5 - Lessons learned from the real world...Peter Gfader
 
video conference (peer to peer)
video conference (peer to peer)video conference (peer to peer)
video conference (peer to peer)mohamed amr
 
Janus/HOMER/HEPIC @ OpenSIPS18
Janus/HOMER/HEPIC @ OpenSIPS18Janus/HOMER/HEPIC @ OpenSIPS18
Janus/HOMER/HEPIC @ OpenSIPS18Lorenzo Miniero
 
Web Performance & Latest in React
Web Performance & Latest in ReactWeb Performance & Latest in React
Web Performance & Latest in ReactTalentica Software
 

Similar a Let's Get Real (time): Server-Sent Events, WebSockets and WebRTC for the soul (20)

Iot meets Serverless
Iot meets ServerlessIot meets Serverless
Iot meets Serverless
 
Building real time applications with Symfony2
Building real time applications with Symfony2Building real time applications with Symfony2
Building real time applications with Symfony2
 
Asynchrone Echtzeitanwendungen für SharePoint mit SignalR und knockout.js
Asynchrone Echtzeitanwendungen für SharePoint mit SignalR und knockout.jsAsynchrone Echtzeitanwendungen für SharePoint mit SignalR und knockout.js
Asynchrone Echtzeitanwendungen für SharePoint mit SignalR und knockout.js
 
Real Time Realitites
Real Time RealititesReal Time Realitites
Real Time Realitites
 
Pune Ruby Meetup - November 2015
Pune Ruby Meetup - November 2015Pune Ruby Meetup - November 2015
Pune Ruby Meetup - November 2015
 
Increasing velocity via serless semantics
Increasing velocity via serless semanticsIncreasing velocity via serless semantics
Increasing velocity via serless semantics
 
ServerSentEventsV2.pdf
ServerSentEventsV2.pdfServerSentEventsV2.pdf
ServerSentEventsV2.pdf
 
Best practices of building data streaming API
Best practices of building data streaming APIBest practices of building data streaming API
Best practices of building data streaming API
 
Chirp 2010: Scaling Twitter
Chirp 2010: Scaling TwitterChirp 2010: Scaling Twitter
Chirp 2010: Scaling Twitter
 
Real time web
Real time webReal time web
Real time web
 
ServerSentEvents.pdf
ServerSentEvents.pdfServerSentEvents.pdf
ServerSentEvents.pdf
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Device APIs at TakeOff Conference
Device APIs at TakeOff ConferenceDevice APIs at TakeOff Conference
Device APIs at TakeOff Conference
 
Developing Revolutionary Web Applications using Comet and Ajax Push
Developing Revolutionary Web Applications using Comet and Ajax PushDeveloping Revolutionary Web Applications using Comet and Ajax Push
Developing Revolutionary Web Applications using Comet and Ajax Push
 
Web sockets - Pentesting
Web sockets - Pentesting Web sockets - Pentesting
Web sockets - Pentesting
 
Silverlight vs HTML5 - Lessons learned from the real world...
Silverlight vs HTML5 - Lessons learned from the real world...Silverlight vs HTML5 - Lessons learned from the real world...
Silverlight vs HTML5 - Lessons learned from the real world...
 
video conference (peer to peer)
video conference (peer to peer)video conference (peer to peer)
video conference (peer to peer)
 
Janus/HOMER/HEPIC @ OpenSIPS18
Janus/HOMER/HEPIC @ OpenSIPS18Janus/HOMER/HEPIC @ OpenSIPS18
Janus/HOMER/HEPIC @ OpenSIPS18
 
Web Performance & Latest in React
Web Performance & Latest in ReactWeb Performance & Latest in React
Web Performance & Latest in React
 
Websocket 101 in Python
Websocket 101 in PythonWebsocket 101 in Python
Websocket 101 in Python
 

Último

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processorsdebabhi2
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024The Digital Insurer
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
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
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Zilliz
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsNanddeep Nachan
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century educationjfdjdjcjdnsjd
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024The Digital Insurer
 
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
 
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
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfOverkill Security
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FMESafe Software
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MIND CTI
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
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
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodJuan lago vázquez
 

Último (20)

Exploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone ProcessorsExploring the Future Potential of AI-Enabled Smartphone Processors
Exploring the Future Potential of AI-Enabled Smartphone Processors
 
AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024AXA XL - Insurer Innovation Award Americas 2024
AXA XL - Insurer Innovation Award Americas 2024
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
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?
 
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
Emergent Methods: Multi-lingual narrative tracking in the news - real-time ex...
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024Manulife - Insurer Transformation Award 2024
Manulife - Insurer Transformation Award 2024
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
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...
 
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
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Ransomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdfRansomware_Q4_2023. The report. [EN].pdf
Ransomware_Q4_2023. The report. [EN].pdf
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
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)
 
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin WoodPolkadot JAM Slides - Token2049 - By Dr. Gavin Wood
Polkadot JAM Slides - Token2049 - By Dr. Gavin Wood
 

Let's Get Real (time): Server-Sent Events, WebSockets and WebRTC for the soul

  • 1. Let’s get real (time): Server-Sent Events,WebSockets and WebRTC for the soul A guided tour of modern browser networking Swanand Pagnis swanand@pagnis.in
  • 2. Yours truly • Originally from Krypton, often mistaken as the last survivor • Sent to earth in a spaceship while still a baby • A few useful superpowers • Suspiciously good at hiding in plain sight
  • 3. Yours truly • Originally from Krypton, often mistaken as the last survivor • Sent to earth in a spaceship while still a baby • A few useful superpowers • Suspiciously good at hiding in plain sight
  • 4. Yours truly • Bangalore RUG, Mysore RUG, Garden City RubyConf • Hack code at Simplero for a living • Twitter @_swanand • Github @swanandp
  • 6. 1. Why bother ? What’s in store for us
  • 7. 1. Why bother ? 2. The Zen of RealTime Communication What’s in store for us
  • 8. 1. Why bother ? 2. The Zen of RealTime Communication 3. Concepts and app Integration with: What’s in store for us
  • 9. 1. Why bother ? 2. The Zen of RealTime Communication 3. Concepts and app Integration with: 1. SSE What’s in store for us
  • 10. 1. Why bother ? 2. The Zen of RealTime Communication 3. Concepts and app Integration with: 1. SSE 2. WebSockets What’s in store for us
  • 11. 1. Why bother ? 2. The Zen of RealTime Communication 3. Concepts and app Integration with: 1. SSE 2. WebSockets 3. WebRTC What’s in store for us
  • 12. 1. Why bother ? 2. The Zen of RealTime Communication 3. Concepts and app Integration with: 1. SSE 2. WebSockets 3. WebRTC 4. Further reading and open source opportunities What’s in store for us
  • 13. Problems with traditional approaches Why Bother ?
  • 14. 1. Poor performance because of high latency 2. Neither truly async nor truly real time, often limited toText transfer only 3. Either additional complexity and inconvenience or hacky methods 7
  • 15. Problems with traditional approaches The Zen of RealTime Communication
  • 16. • Escape from Request-Response cycle • Do not be bound to HTTP • It may or may not always REST
  • 17.
  • 18. Also known as the EventSource API Server-Sent Events
  • 19. Server-Sent Events : Introduction 12
  • 20. Server-Sent Events : Introduction 1. Designed for Server to Client communication 12
  • 21. Server-Sent Events : Introduction 1. Designed for Server to Client communication 2. Single long lived connection; hence low latency 12
  • 22. Server-Sent Events : Introduction 1. Designed for Server to Client communication 2. Single long lived connection; hence low latency 3. Simple cross browser API 12
  • 23. Server-Sent Events : Use cases • Activity feeds likeTwitter, Facebook, StockTickers • Analytics, Dashboards, Monitoring • Chats, Instant Messaging *, Collaborative editing like Google Docs 13
  • 26. Server-Sent Events : Summary 1. Simple Protocol that builds on top of HTTP 2. Truly async 3. Perfect for “notifying” the client 4. Great cross browser support, but no binary support 16
  • 27. 1. Traditional Rack based app are a slight misfit because of response buffering ( Remember our first Zen ? ) 2. Evented architecture works in our favour (Think of EM::Deferrable orThin ) 3. Long running connection means long running process on the server Server-Sent Events :App Integration 17
  • 28. 1. ActionController::Live 2. Sinatra’s Streaming API 3. Faye 4. Cramp 5. Pusher Server-Sent Events :App Integration 18
  • 29. 1. Streaming and SSE support baked right into Rails ( 4.0 ) 2. You keep the full context ( current_user etc ) 3. Integration friendly, almost a drop-in feature into existing Rails apps ActionController::Live 19
  • 32. 1. You only need Sinatra, Thin and some Javascript 2. So simple, you will cry with happiness 3. No app context 4. So simple, you will beg for more features Sinatra’s Streaming API
  • 33. 1. You only need Sinatra, Thin and some Javascript 2. So simple, you will cry with happiness 3. No app context 4. So simple, you will beg for more features Sinatra’s Streaming API
  • 34. 1. Running a separate process that acts as a server, and your server and client act as clients to this server 2. Pub / sub model, drop-in integration with your app 3. Graceful degradation 4. No app context Faye +Your App 22
  • 36. Apps that have more traditional components than real time 1. Use a separate process / service / app for the real time part ( e.g. Faye or Pusher or BYOT ) 2. Use existing infrastructure for non real time aspects of the app Recommended approach Rant 24
  • 37.
  • 38. WebSockets When Server-Sent Events are just not enough
  • 40. WebSockets : Introduction 1. Standalone Bidirectional protocol 27
  • 41. WebSockets : Introduction 1. Standalone Bidirectional protocol 2. Message oriented, supports events by design 27
  • 42. WebSockets : Introduction 1. Standalone Bidirectional protocol 2. Message oriented, supports events by design 3. Reliable text and binary transfers 27
  • 43. WebSockets : Introduction 1. Standalone Bidirectional protocol 2. Message oriented, supports events by design 3. Reliable text and binary transfers 4. HTTP Compatible 27
  • 44. 1. All the use cases of SSEs, plus: 2. Multiplayer games, Multi-media chat * 3. Remote pair programming, Online contests, Live interviews, Screen sharing, Remote Desktop etc. WebSockets : Use Cases 28
  • 46. WebSockets : Upgrade Handshake
  • 47. 1. Faye +Your app 2. Cramp +Your app 3. websocket-rails 4. em-websocket, em-websocket-rails 5. Pusher WebSocket WebSockets :App Integration 31
  • 48. Cramp +Your App 32 1. Run Cramp as a standalone app 2. Provides an app like functionality around RTC 3. Think of it as Rails for real time apps 4. No drop-in integration with existing app
  • 49. Cramp +Your App 33 1. Controller becomes Action 2. Action becomes Event, triggered with on_data 3. params become data 4. Connection open by default
  • 50. Recommended approach 34 Apps that are heavily real time 1. Use Cramp to build a stand alone app 2. Be an API consumer for your other app for any additional functionality Rant
  • 51.
  • 53.
  • 54. Modern Day Kazaa, in an Iron Man Suit WebRTC
  • 55. WebRTC : Introduction 39 1. Peer-to-peer audio, video, and data sharing between browsers 2. Standardised to a JavaScript API 3. Google Backed
  • 56. WebRTC : Introduction 40 1. Acquire Audio andVideo data 2. Communicate Audio andVideo data 3. Communicate Arbitrary Application Data
  • 57. WebRTC : Introduction 41 1. MediaStream 2. RTCPeerConnection 3. RTCDataChannel
  • 58. WebRTC : Introduction 42 1. MediaStream 2. RTCPeerConnection 3. RTCDataChannel
  • 59. WebRTC : Typical Workflow - Phase 1 43
  • 60. WebRTC : Typical Workflow - Phase 1 43 1. Connect to the Signalling Server, let it know: 1. Your Identity ( STUN ) 2. How to reach you ( ICE Candidate ) 2. Once a peer is detected by the server, it in turns gives you the above info 3. At this point, we are ready for a P2P connection
  • 61. WebRTC : Typical Workflow - Phase 1 Incomplete Code
  • 62. WebRTC : Typical Workflow - Phase II 45
  • 63. WebRTC : Typical Workflow - Phase II 45 1. Create a stream to send and receive binary data 2. Create a channel to send and receive text data 3. Actually send and receive data
  • 64. WebRTC : Typical Workflow - Phase II
  • 65. – Oscar Wilde “Consistency is the last refuge of the unimaginative”
  • 66. WebRTC : Use Cases 48 1. Motherlode of Skype clones, free and open source! 2. Screen sharing, remote pairing, multiplayer games, browser based torrents, Live MOOCs 3. In reality, this is limited mostly by our imagination and browser’s computing abilities
  • 67. WebRTC : Dive in 49 1. Use any of the JavaScript libs / SDKs : 1. Open Source: SimpleWebRTC, webRTC.io, PeerJS, EasyRTC, ShareFest 2. Commercial: PubNub WebRTC SDK 2. Signalling service example in Ruby 1. OSS : github.com/palavatv/palava-machine
  • 69. • HTML5Rocks ( it’s a website, not a collection of rocks ) • http://studio.html5rocks.com/ • WebRTC official website • Mozilla Developer Network • http://simpl.info/ Websites
  • 70. • Ilya Grigorik • Sam Dutton • Paul Irish • Eric Bidelman • Your own blog, one year from now Blogs
  • 71. • High Performance Browser Networking • Getting Started with WebRTC • HTML5: Up and Running Books
  • 73. • Help out Faye, Cramp and other libraries mentioned so far • Open source all your throw-away code written during learning ( Mine is on Github ) • Async-proof versions of commonly needed ruby gems ( e.g. github.com/rkh/async-rack )
  • 74. • Helper Libraries for Cramp, e.g. • To easily build simple board games • To write calendar based real time apps • Augment the testing libraries to test real time stuff • Write and make your benchmarks available