SlideShare a Scribd company logo
1 of 42
Download to read offline
Building	
  Real-­‐Time	
  Web	
  Applica4ons	
  
Tony	
  Abou-­‐Assaleh	
  &	
  Mark	
  Dineen	
  
October	
  22,	
  2013	
  
Volta	
  Labs	
  
Agenda	
  
• 
• 
• 
• 
• 
• 
• 

What	
  is	
  real-­‐time	
  web	
  
The	
  stack	
  
Client-­‐side	
  
Server-­‐side	
  
The	
  Flow	
  
Beyond	
  the	
  basics	
  
Live	
  Tutorial	
  
Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

2	
  
Who	
  we	
  are	
  
•  Tony	
  Abou-­‐Assaleh	
  
–  PhD	
  in	
  Computer	
  Science	
  from	
  Dal	
  
–  Cofounder	
  and	
  CEO,	
  TitanFile	
  
–  Ex-­‐Google,	
  VP	
  Tech	
  /	
  R&D	
  Director	
  @	
  
GenieKnows	
  
–  Developed	
  the	
  initial	
  real-­‐time	
  components	
  of	
  
TitanFile	
  
–  Core	
  member	
  of	
  Backbone	
  Marionette	
  Team	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

3	
  
Who	
  we	
  are	
  
•  Mark	
  Dineen	
  
–  CTO,	
  TitanFile	
  
–  Made	
  RT	
  in	
  TitanFile	
  fast	
  and	
  secure	
  
–  Director	
  of	
  IT	
  at	
  Allianz	
  
–  Compliance	
  and	
  security	
  veteran	
  
–  Contributor	
  at	
  OWASP.org	
  	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

4	
  
What	
  is	
  Real-­‐Time	
  Web?	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

5	
  
What	
  is	
  Real-­‐Time	
  Web?	
  
Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

6	
  
What	
  is	
  Real-­‐Time	
  Web?	
  
• 
• 
• 
• 

Saves	
  to	
  the	
  database	
  ≠	
  real-­‐time	
  Web	
  
Periodic	
  refresh	
  ≠	
  real-­‐time	
  Web	
  
Real-­‐time	
  computing	
  ≠	
  real-­‐time	
  Web	
  
Real-­‐time	
  streaming	
  ≠	
  real-­‐time	
  Web	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

7	
  
What	
  is	
  Real-­‐Time	
  Web?	
  
A	
  set	
  of	
  technologies	
  and	
  practices	
  that	
  enable	
  
users	
  to	
  receive	
  information	
  as	
  soon	
  as	
  it	
  is	
  
published	
  by	
  its	
  authors,	
  rather	
  than	
  requiring	
  
that	
  they	
  or	
  their	
  software	
  check	
  a	
  source	
  
periodically	
  for	
  updates.	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

8	
  
What	
  is	
  Real-­‐Time	
  Web?	
  
• 
• 
• 
• 

Dynamic	
  user	
  interface	
  
Server-­‐side	
  push	
  
Event-­‐driven	
  
Asynchronous	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

9	
  
Applica4on	
  of	
  RT	
  Web	
  
• 
• 
• 
• 
• 
• 
• 

Chat,	
  communication	
  
Collaboration	
  
Co-­‐editing,	
  co-­‐browsing,	
  co-­‐shopping	
  
Dashboards	
  and	
  monitoring	
  
Gaming	
  
Social	
  Web	
  
Date	
  Streaming	
  
Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

10	
  
The	
  Stack	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

11	
  
Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

12	
  
The	
  Stack	
  
•  Asynchronous,	
  dynamic	
  client	
  
•  HTML5	
  WebSockets	
  
	
  

•  Asynchronous	
  backend	
  server	
  
Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

13	
  
The	
  Stack	
  @	
  TitanFile	
  

Client	
  

Server	
  
Dispatcher	
  
TornadIO2	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

14	
  
Client-­‐Side	
  Stack	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

15	
  
Transport	
  Op4ons	
  -­‐	
  Comet	
  
•  HTML5	
  WebSockets	
  
•  Flash	
  Socket	
  
•  Long	
  Polling	
  
–  IFrame	
  
–  Ajax	
  
–  XMLHttpRequest	
  
–  JSONP	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

16	
  
Cross-­‐origin	
  resource	
  sharing	
  (CORS)	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

17	
  
Polling	
  vs.	
  WebSockets	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

18	
  
WebSocket	
  Handshake	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

19	
  
WebSocket	
  Op4ons	
  
•  Plain	
  HTML5	
  WebSockets	
  
	
  
•  SockJS	
  
•  Socket.io	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

20	
  
HTML5	
  WebSockets	
  
• 
• 
• 
• 

Open	
  Connection	
  
Send	
  message	
  
On	
  message	
  event	
  
Close	
  connection	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

21	
  
SockJS	
  
• 
• 
• 
• 

WebSocket	
  Emulator	
  
Follows	
  HTML5	
  WebSocket	
  API	
  
Cross-­‐domain	
  support	
  
Polling	
  as	
  fallback	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

22	
  
Socket.IO	
  
•  Real-­‐time	
  Web	
  App	
  Protocol	
  
•  Event-­‐based	
  communication	
  
–  Connection	
  events	
  
–  Named	
  events	
  

•  Broadcast	
  
•  Cross-­‐browser	
  and	
  platform	
  
•  Server-­‐side	
  (Node.JS)	
  and	
  client-­‐side	
  
Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

23	
  
Server-­‐Side	
  Stack	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

24	
  
Real-­‐Time	
  Web	
  Servers	
  
•  Most	
  modern	
  languages	
  …	
  
•  Many	
  modern	
  frameworks	
  …	
  
–  NodeJS	
  
–  Tornado	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

25	
  
The	
  Flow	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

26	
  
Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

27	
  
Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

28	
  
More	
  Detailed	
  (Useful)	
  Flow	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

29	
  
Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

30	
  
Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

31	
  
Pub	
  Sub	
  PaPern	
  
• 
• 
• 
• 

Decouples	
  senders	
  from	
  receivers	
  
Intermediate	
  hub	
  
Senders	
  –	
  publish	
  messages	
  to	
  a	
  channel	
  
Receivers	
  –	
  subscribe	
  to	
  a	
  channel	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

32	
  
The	
  Flow	
  @	
  TitanFile	
  
Sender	
  Client	
  

Server	
  

Recipient	
  Client	
  

User	
  Action	
  

Django	
  
Model	
  Saved	
  

Django	
  
post_save	
  

Render	
  
changes	
  

Backbone	
  
Model	
  Saved	
  

Django	
  
Handler	
  

Django	
  signal	
  
handler	
  

Backbone	
  
handler	
  

ioSync	
  
Socket.io	
  

TornadIO2	
  
Dispatcher	
  

TorandIO2	
  
Broadcast	
  

ioBind	
  
Socket.io	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

33	
  
Beyond	
  the	
  Basics	
  
	
  
Real-­‐World	
  Challenges	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

34	
  
Real	
  World	
  Challenges	
  
• 
• 
• 
• 

Authentication	
  
Security	
  
Binary	
  Data	
  (Files)	
  
Blocking	
  Code	
  
–  Database,	
  File	
  I/O,	
  Network	
  

•  Scalability	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

35	
  
Authen4ca4on	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

36	
  
Security	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

37	
  
Binary	
  Data	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

38	
  
Blocking	
  Code	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

39	
  
Scalability	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

40	
  
Live	
  Tutorial	
  
https://github.com/mdineen/chatserver	
  

Copyright	
  (c)	
  2013	
  TitanFile	
  Inc.	
  

41	
  
Tony	
  Abou-­‐Assaleh	
  &	
  Mark	
  Dineen	
  
https://www.titanFile.com	
  
{taa,mark}@titanFile.com	
  
Twitter:	
  @tony_aa,	
  @DineenMa	
  

More Related Content

What's hot

Owasp top 10 security threats
Owasp top 10 security threatsOwasp top 10 security threats
Owasp top 10 security threatsVishal Kumar
 
(DVO312) Sony: Building At-Scale Services with AWS Elastic Beanstalk
(DVO312) Sony: Building At-Scale Services with AWS Elastic Beanstalk(DVO312) Sony: Building At-Scale Services with AWS Elastic Beanstalk
(DVO312) Sony: Building At-Scale Services with AWS Elastic BeanstalkAmazon Web Services
 
2021 ZAP Automation in CI/CD
2021 ZAP Automation in CI/CD2021 ZAP Automation in CI/CD
2021 ZAP Automation in CI/CDSimon Bennetts
 
Functional testing vs non functional testing | Difference Between Functional ...
Functional testing vs non functional testing | Difference Between Functional ...Functional testing vs non functional testing | Difference Between Functional ...
Functional testing vs non functional testing | Difference Between Functional ...Intellipaat
 
security misconfigurations
security misconfigurationssecurity misconfigurations
security misconfigurationsMegha Sahu
 
SonarQube - The leading platform for Continuous Code Quality
SonarQube - The leading platform for Continuous Code QualitySonarQube - The leading platform for Continuous Code Quality
SonarQube - The leading platform for Continuous Code QualityLarry Nung
 
DevSecOps: Key Controls to Modern Security Success
DevSecOps: Key Controls to Modern Security SuccessDevSecOps: Key Controls to Modern Security Success
DevSecOps: Key Controls to Modern Security SuccessPuma Security, LLC
 
Introduce Toaster (Toasterのご紹介)
Introduce Toaster (Toasterのご紹介)Introduce Toaster (Toasterのご紹介)
Introduce Toaster (Toasterのご紹介)Hiroshi Sakate
 
Grokking Techtalk #46: Lessons from years hacking and defending Vietnamese banks
Grokking Techtalk #46: Lessons from years hacking and defending Vietnamese banksGrokking Techtalk #46: Lessons from years hacking and defending Vietnamese banks
Grokking Techtalk #46: Lessons from years hacking and defending Vietnamese banksGrokking VN
 
Application Monitoring using Datadog
Application Monitoring using DatadogApplication Monitoring using Datadog
Application Monitoring using DatadogMukta Aphale
 
[243]kaleido 노현걸
[243]kaleido 노현걸[243]kaleido 노현걸
[243]kaleido 노현걸NAVER D2
 

What's hot (20)

DevOps
DevOps DevOps
DevOps
 
DevSecOps What Why and How
DevSecOps What Why and HowDevSecOps What Why and How
DevSecOps What Why and How
 
Owasp top 10 security threats
Owasp top 10 security threatsOwasp top 10 security threats
Owasp top 10 security threats
 
(DVO312) Sony: Building At-Scale Services with AWS Elastic Beanstalk
(DVO312) Sony: Building At-Scale Services with AWS Elastic Beanstalk(DVO312) Sony: Building At-Scale Services with AWS Elastic Beanstalk
(DVO312) Sony: Building At-Scale Services with AWS Elastic Beanstalk
 
SonarQube Overview
SonarQube OverviewSonarQube Overview
SonarQube Overview
 
2021 ZAP Automation in CI/CD
2021 ZAP Automation in CI/CD2021 ZAP Automation in CI/CD
2021 ZAP Automation in CI/CD
 
Past, Present and Future of DevOps Infrastructure
Past, Present and Future of DevOps InfrastructurePast, Present and Future of DevOps Infrastructure
Past, Present and Future of DevOps Infrastructure
 
SecDevOps
SecDevOpsSecDevOps
SecDevOps
 
Security testing
Security testingSecurity testing
Security testing
 
Functional testing vs non functional testing | Difference Between Functional ...
Functional testing vs non functional testing | Difference Between Functional ...Functional testing vs non functional testing | Difference Between Functional ...
Functional testing vs non functional testing | Difference Between Functional ...
 
security misconfigurations
security misconfigurationssecurity misconfigurations
security misconfigurations
 
SonarQube - The leading platform for Continuous Code Quality
SonarQube - The leading platform for Continuous Code QualitySonarQube - The leading platform for Continuous Code Quality
SonarQube - The leading platform for Continuous Code Quality
 
DevSecOps: Key Controls to Modern Security Success
DevSecOps: Key Controls to Modern Security SuccessDevSecOps: Key Controls to Modern Security Success
DevSecOps: Key Controls to Modern Security Success
 
Introducing DevOps
Introducing DevOpsIntroducing DevOps
Introducing DevOps
 
Security testing
Security testingSecurity testing
Security testing
 
Introduce Toaster (Toasterのご紹介)
Introduce Toaster (Toasterのご紹介)Introduce Toaster (Toasterのご紹介)
Introduce Toaster (Toasterのご紹介)
 
Grokking Techtalk #46: Lessons from years hacking and defending Vietnamese banks
Grokking Techtalk #46: Lessons from years hacking and defending Vietnamese banksGrokking Techtalk #46: Lessons from years hacking and defending Vietnamese banks
Grokking Techtalk #46: Lessons from years hacking and defending Vietnamese banks
 
Application Monitoring using Datadog
Application Monitoring using DatadogApplication Monitoring using Datadog
Application Monitoring using Datadog
 
[243]kaleido 노현걸
[243]kaleido 노현걸[243]kaleido 노현걸
[243]kaleido 노현걸
 
Lock free queue
Lock free queueLock free queue
Lock free queue
 

Viewers also liked

HTML5 WebSockets in Python/Django
HTML5 WebSockets in Python/DjangoHTML5 WebSockets in Python/Django
HTML5 WebSockets in Python/DjangoTony Abou-Assaleh
 
Le UX Design en Afrique - WIAD Lyon 2017
Le UX Design en Afrique - WIAD Lyon 2017Le UX Design en Afrique - WIAD Lyon 2017
Le UX Design en Afrique - WIAD Lyon 2017YUX Dakar
 
Security and governance in the cloud
Security and governance in the cloudSecurity and governance in the cloud
Security and governance in the cloudJulian Knight
 
How Spotify Does Test Automation - Kristian Karl
How Spotify Does Test Automation - Kristian KarlHow Spotify Does Test Automation - Kristian Karl
How Spotify Does Test Automation - Kristian KarlSmartBear
 
Talking to Humans: The Art of Customer Discovery
Talking to Humans: The Art of Customer DiscoveryTalking to Humans: The Art of Customer Discovery
Talking to Humans: The Art of Customer DiscoveryNew York University
 
Quality Built In @ Spotify
Quality Built In @ SpotifyQuality Built In @ Spotify
Quality Built In @ SpotifyAndrii Dzynia
 
Introduction to SoapUI day 1
Introduction to SoapUI day 1Introduction to SoapUI day 1
Introduction to SoapUI day 1Qualitest
 
Introduction to Test Automation
Introduction to Test AutomationIntroduction to Test Automation
Introduction to Test AutomationPekka Klärck
 
Ross Snyder, Etsy, SXSW Lean Startup 2013
Ross Snyder, Etsy, SXSW Lean Startup 2013Ross Snyder, Etsy, SXSW Lean Startup 2013
Ross Snyder, Etsy, SXSW Lean Startup 2013500 Startups
 
Design, Create & Explore Learning with Your Mobile Devices
Design, Create & Explore Learning with Your Mobile DevicesDesign, Create & Explore Learning with Your Mobile Devices
Design, Create & Explore Learning with Your Mobile DevicesNick Floro
 
Tips for Designing, Testing & Delivering eLearning in a Multi-device World
Tips for Designing, Testing & Delivering eLearning in a Multi-device WorldTips for Designing, Testing & Delivering eLearning in a Multi-device World
Tips for Designing, Testing & Delivering eLearning in a Multi-device WorldUpside Learning Solutions
 
Как заработать в облаке? FAQ для реселлеров и интеграторов
Как заработать в облаке? FAQ для реселлеров и интеграторовКак заработать в облаке? FAQ для реселлеров и интеграторов
Как заработать в облаке? FAQ для реселлеров и интеграторовMichael Kozloff
 
Creating Maintainable Automated Acceptance Tests
Creating Maintainable Automated Acceptance TestsCreating Maintainable Automated Acceptance Tests
Creating Maintainable Automated Acceptance TestsJez Humble
 
The Copywriter’s Handbook
The Copywriter’s HandbookThe Copywriter’s Handbook
The Copywriter’s HandbookColin Post
 

Viewers also liked (15)

HTML5 WebSockets in Python/Django
HTML5 WebSockets in Python/DjangoHTML5 WebSockets in Python/Django
HTML5 WebSockets in Python/Django
 
Le UX Design en Afrique - WIAD Lyon 2017
Le UX Design en Afrique - WIAD Lyon 2017Le UX Design en Afrique - WIAD Lyon 2017
Le UX Design en Afrique - WIAD Lyon 2017
 
Security and governance in the cloud
Security and governance in the cloudSecurity and governance in the cloud
Security and governance in the cloud
 
How Spotify Does Test Automation - Kristian Karl
How Spotify Does Test Automation - Kristian KarlHow Spotify Does Test Automation - Kristian Karl
How Spotify Does Test Automation - Kristian Karl
 
Talking to Humans: The Art of Customer Discovery
Talking to Humans: The Art of Customer DiscoveryTalking to Humans: The Art of Customer Discovery
Talking to Humans: The Art of Customer Discovery
 
Quality Built In @ Spotify
Quality Built In @ SpotifyQuality Built In @ Spotify
Quality Built In @ Spotify
 
Introduction to SoapUI day 1
Introduction to SoapUI day 1Introduction to SoapUI day 1
Introduction to SoapUI day 1
 
The impact of AI on work
The impact of AI on workThe impact of AI on work
The impact of AI on work
 
Introduction to Test Automation
Introduction to Test AutomationIntroduction to Test Automation
Introduction to Test Automation
 
Ross Snyder, Etsy, SXSW Lean Startup 2013
Ross Snyder, Etsy, SXSW Lean Startup 2013Ross Snyder, Etsy, SXSW Lean Startup 2013
Ross Snyder, Etsy, SXSW Lean Startup 2013
 
Design, Create & Explore Learning with Your Mobile Devices
Design, Create & Explore Learning with Your Mobile DevicesDesign, Create & Explore Learning with Your Mobile Devices
Design, Create & Explore Learning with Your Mobile Devices
 
Tips for Designing, Testing & Delivering eLearning in a Multi-device World
Tips for Designing, Testing & Delivering eLearning in a Multi-device WorldTips for Designing, Testing & Delivering eLearning in a Multi-device World
Tips for Designing, Testing & Delivering eLearning in a Multi-device World
 
Как заработать в облаке? FAQ для реселлеров и интеграторов
Как заработать в облаке? FAQ для реселлеров и интеграторовКак заработать в облаке? FAQ для реселлеров и интеграторов
Как заработать в облаке? FAQ для реселлеров и интеграторов
 
Creating Maintainable Automated Acceptance Tests
Creating Maintainable Automated Acceptance TestsCreating Maintainable Automated Acceptance Tests
Creating Maintainable Automated Acceptance Tests
 
The Copywriter’s Handbook
The Copywriter’s HandbookThe Copywriter’s Handbook
The Copywriter’s Handbook
 

Similar to Building Real-Time Web Applications

NYC Titanium User's Group - tiConf US Revisited
NYC Titanium User's Group - tiConf US RevisitedNYC Titanium User's Group - tiConf US Revisited
NYC Titanium User's Group - tiConf US RevisitedJohn Oliva
 
Comparison of Open Source Frameworks for Integrating the Internet of Things
Comparison of Open Source Frameworks for Integrating the Internet of ThingsComparison of Open Source Frameworks for Integrating the Internet of Things
Comparison of Open Source Frameworks for Integrating the Internet of ThingsKai Wähner
 
IoT Open Source Integration Comparison (Kura, Node-RED, Flogo, Apache Nifi, S...
IoT Open Source Integration Comparison (Kura, Node-RED, Flogo, Apache Nifi, S...IoT Open Source Integration Comparison (Kura, Node-RED, Flogo, Apache Nifi, S...
IoT Open Source Integration Comparison (Kura, Node-RED, Flogo, Apache Nifi, S...Kai Wähner
 
Sc manufacturing conference and expo hitachi i io-t april 20 2016 final
Sc manufacturing conference and expo   hitachi i io-t april 20 2016 finalSc manufacturing conference and expo   hitachi i io-t april 20 2016 final
Sc manufacturing conference and expo hitachi i io-t april 20 2016 finalKeith Brown
 
From zero to one - How we evolved our test automation processes and mindset i...
From zero to one - How we evolved our test automation processes and mindset i...From zero to one - How we evolved our test automation processes and mindset i...
From zero to one - How we evolved our test automation processes and mindset i...Jen-Chieh Ko
 
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...Amir Zmora
 
Microservices at Scale with Istio
Microservices at Scale with IstioMicroservices at Scale with Istio
Microservices at Scale with IstioJesse Butler
 
Using Appcelerator Titanium to build native android apps without the native pain
Using Appcelerator Titanium to build native android apps without the native painUsing Appcelerator Titanium to build native android apps without the native pain
Using Appcelerator Titanium to build native android apps without the native painGaurav Kheterpal
 
TiConf Australia 2013
TiConf Australia 2013TiConf Australia 2013
TiConf Australia 2013Jeff Haynie
 
Effective IoT System on Openstack
Effective IoT System on OpenstackEffective IoT System on Openstack
Effective IoT System on OpenstackTakashi Kajinami
 
Recommendation at scale
Recommendation at scaleRecommendation at scale
Recommendation at scalesimondolle
 
Triton: A peer-assisted cloud storage systems
Triton: A peer-assisted cloud storage systems Triton: A peer-assisted cloud storage systems
Triton: A peer-assisted cloud storage systems Antonio Davoli
 
InfluxDB Community Office Hours September 2020
InfluxDB Community Office Hours September 2020 InfluxDB Community Office Hours September 2020
InfluxDB Community Office Hours September 2020 InfluxData
 
Mission Possible: Future of IT Support
Mission Possible: Future of IT SupportMission Possible: Future of IT Support
Mission Possible: Future of IT SupportCompTIA
 
Crafting enhanced customer experience through chatbots, beacons and oracle jet
Crafting enhanced customer experience through chatbots, beacons and oracle jetCrafting enhanced customer experience through chatbots, beacons and oracle jet
Crafting enhanced customer experience through chatbots, beacons and oracle jetRohit Dhamija
 
Beyond S3 Buckets - Effective Countermeasures for Emerging Cloud Threats
Beyond S3 Buckets - Effective Countermeasures for Emerging Cloud ThreatsBeyond S3 Buckets - Effective Countermeasures for Emerging Cloud Threats
Beyond S3 Buckets - Effective Countermeasures for Emerging Cloud ThreatsSBWebinars
 
[Public] 7 archetipi della tecnologia moderna [italy]
[Public] 7 archetipi della tecnologia moderna [italy][Public] 7 archetipi della tecnologia moderna [italy]
[Public] 7 archetipi della tecnologia moderna [italy]Nicolas Bortolotti
 

Similar to Building Real-Time Web Applications (20)

NYC Titanium User's Group - tiConf US Revisited
NYC Titanium User's Group - tiConf US RevisitedNYC Titanium User's Group - tiConf US Revisited
NYC Titanium User's Group - tiConf US Revisited
 
Comparison of Open Source Frameworks for Integrating the Internet of Things
Comparison of Open Source Frameworks for Integrating the Internet of ThingsComparison of Open Source Frameworks for Integrating the Internet of Things
Comparison of Open Source Frameworks for Integrating the Internet of Things
 
IoT Open Source Integration Comparison (Kura, Node-RED, Flogo, Apache Nifi, S...
IoT Open Source Integration Comparison (Kura, Node-RED, Flogo, Apache Nifi, S...IoT Open Source Integration Comparison (Kura, Node-RED, Flogo, Apache Nifi, S...
IoT Open Source Integration Comparison (Kura, Node-RED, Flogo, Apache Nifi, S...
 
Sc manufacturing conference and expo hitachi i io-t april 20 2016 final
Sc manufacturing conference and expo   hitachi i io-t april 20 2016 finalSc manufacturing conference and expo   hitachi i io-t april 20 2016 final
Sc manufacturing conference and expo hitachi i io-t april 20 2016 final
 
tiConf (la dediff)
tiConf (la dediff)tiConf (la dediff)
tiConf (la dediff)
 
Python Diamond Tool
Python Diamond ToolPython Diamond Tool
Python Diamond Tool
 
From zero to one - How we evolved our test automation processes and mindset i...
From zero to one - How we evolved our test automation processes and mindset i...From zero to one - How we evolved our test automation processes and mindset i...
From zero to one - How we evolved our test automation processes and mindset i...
 
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
WebRTC Webinar & Q&A - W3C WebRTC JS API Test Platform & Updates from W3C Lis...
 
Microservices at Scale with Istio
Microservices at Scale with IstioMicroservices at Scale with Istio
Microservices at Scale with Istio
 
Using Appcelerator Titanium to build native android apps without the native pain
Using Appcelerator Titanium to build native android apps without the native painUsing Appcelerator Titanium to build native android apps without the native pain
Using Appcelerator Titanium to build native android apps without the native pain
 
TiConf Australia 2013
TiConf Australia 2013TiConf Australia 2013
TiConf Australia 2013
 
Effective IoT System on Openstack
Effective IoT System on OpenstackEffective IoT System on Openstack
Effective IoT System on Openstack
 
Recommendation at scale
Recommendation at scaleRecommendation at scale
Recommendation at scale
 
Triton: A peer-assisted cloud storage systems
Triton: A peer-assisted cloud storage systems Triton: A peer-assisted cloud storage systems
Triton: A peer-assisted cloud storage systems
 
InfluxDB Community Office Hours September 2020
InfluxDB Community Office Hours September 2020 InfluxDB Community Office Hours September 2020
InfluxDB Community Office Hours September 2020
 
Mission Possible: Future of IT Support
Mission Possible: Future of IT SupportMission Possible: Future of IT Support
Mission Possible: Future of IT Support
 
Introduction to RTI DDS
Introduction to RTI DDSIntroduction to RTI DDS
Introduction to RTI DDS
 
Crafting enhanced customer experience through chatbots, beacons and oracle jet
Crafting enhanced customer experience through chatbots, beacons and oracle jetCrafting enhanced customer experience through chatbots, beacons and oracle jet
Crafting enhanced customer experience through chatbots, beacons and oracle jet
 
Beyond S3 Buckets - Effective Countermeasures for Emerging Cloud Threats
Beyond S3 Buckets - Effective Countermeasures for Emerging Cloud ThreatsBeyond S3 Buckets - Effective Countermeasures for Emerging Cloud Threats
Beyond S3 Buckets - Effective Countermeasures for Emerging Cloud Threats
 
[Public] 7 archetipi della tecnologia moderna [italy]
[Public] 7 archetipi della tecnologia moderna [italy][Public] 7 archetipi della tecnologia moderna [italy]
[Public] 7 archetipi della tecnologia moderna [italy]
 

Recently uploaded

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024Lonnie McRorey
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenHervé Boutemy
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningLars Bell
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLScyllaDB
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.Curtis Poe
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsMiki Katsuragi
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piececharlottematthew16
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Mattias Andersson
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr BaganFwdays
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 3652toLead Limited
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Scott Keck-Warren
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfPrecisely
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...Fwdays
 

Recently uploaded (20)

TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024TeamStation AI System Report LATAM IT Salaries 2024
TeamStation AI System Report LATAM IT Salaries 2024
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
DevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache MavenDevoxxFR 2024 Reproducible Builds with Apache Maven
DevoxxFR 2024 Reproducible Builds with Apache Maven
 
DSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine TuningDSPy a system for AI to Write Prompts and Do Fine Tuning
DSPy a system for AI to Write Prompts and Do Fine Tuning
 
Developer Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQLDeveloper Data Modeling Mistakes: From Postgres to NoSQL
Developer Data Modeling Mistakes: From Postgres to NoSQL
 
How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.How AI, OpenAI, and ChatGPT impact business and software.
How AI, OpenAI, and ChatGPT impact business and software.
 
Vertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering TipsVertex AI Gemini Prompt Engineering Tips
Vertex AI Gemini Prompt Engineering Tips
 
Story boards and shot lists for my a level piece
Story boards and shot lists for my a level pieceStory boards and shot lists for my a level piece
Story boards and shot lists for my a level piece
 
Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?Are Multi-Cloud and Serverless Good or Bad?
Are Multi-Cloud and Serverless Good or Bad?
 
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan"ML in Production",Oleksandr Bagan
"ML in Production",Oleksandr Bagan
 
Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365Ensuring Technical Readiness For Copilot in Microsoft 365
Ensuring Technical Readiness For Copilot in Microsoft 365
 
Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024Advanced Test Driven-Development @ php[tek] 2024
Advanced Test Driven-Development @ php[tek] 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdfHyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
Hyperautomation and AI/ML: A Strategy for Digital Transformation Success.pdf
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks..."LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
"LLMs for Python Engineers: Advanced Data Analysis and Semantic Kernel",Oleks...
 

Building Real-Time Web Applications

  • 1. Building  Real-­‐Time  Web  Applica4ons   Tony  Abou-­‐Assaleh  &  Mark  Dineen   October  22,  2013   Volta  Labs  
  • 2. Agenda   •  •  •  •  •  •  •  What  is  real-­‐time  web   The  stack   Client-­‐side   Server-­‐side   The  Flow   Beyond  the  basics   Live  Tutorial   Copyright  (c)  2013  TitanFile  Inc.   2  
  • 3. Who  we  are   •  Tony  Abou-­‐Assaleh   –  PhD  in  Computer  Science  from  Dal   –  Cofounder  and  CEO,  TitanFile   –  Ex-­‐Google,  VP  Tech  /  R&D  Director  @   GenieKnows   –  Developed  the  initial  real-­‐time  components  of   TitanFile   –  Core  member  of  Backbone  Marionette  Team   Copyright  (c)  2013  TitanFile  Inc.   3  
  • 4. Who  we  are   •  Mark  Dineen   –  CTO,  TitanFile   –  Made  RT  in  TitanFile  fast  and  secure   –  Director  of  IT  at  Allianz   –  Compliance  and  security  veteran   –  Contributor  at  OWASP.org     Copyright  (c)  2013  TitanFile  Inc.   4  
  • 5. What  is  Real-­‐Time  Web?   Copyright  (c)  2013  TitanFile  Inc.   5  
  • 6. What  is  Real-­‐Time  Web?   Copyright  (c)  2013  TitanFile  Inc.   6  
  • 7. What  is  Real-­‐Time  Web?   •  •  •  •  Saves  to  the  database  ≠  real-­‐time  Web   Periodic  refresh  ≠  real-­‐time  Web   Real-­‐time  computing  ≠  real-­‐time  Web   Real-­‐time  streaming  ≠  real-­‐time  Web   Copyright  (c)  2013  TitanFile  Inc.   7  
  • 8. What  is  Real-­‐Time  Web?   A  set  of  technologies  and  practices  that  enable   users  to  receive  information  as  soon  as  it  is   published  by  its  authors,  rather  than  requiring   that  they  or  their  software  check  a  source   periodically  for  updates.   Copyright  (c)  2013  TitanFile  Inc.   8  
  • 9. What  is  Real-­‐Time  Web?   •  •  •  •  Dynamic  user  interface   Server-­‐side  push   Event-­‐driven   Asynchronous   Copyright  (c)  2013  TitanFile  Inc.   9  
  • 10. Applica4on  of  RT  Web   •  •  •  •  •  •  •  Chat,  communication   Collaboration   Co-­‐editing,  co-­‐browsing,  co-­‐shopping   Dashboards  and  monitoring   Gaming   Social  Web   Date  Streaming   Copyright  (c)  2013  TitanFile  Inc.   10  
  • 11. The  Stack   Copyright  (c)  2013  TitanFile  Inc.   11  
  • 12. Copyright  (c)  2013  TitanFile  Inc.   12  
  • 13. The  Stack   •  Asynchronous,  dynamic  client   •  HTML5  WebSockets     •  Asynchronous  backend  server   Copyright  (c)  2013  TitanFile  Inc.   13  
  • 14. The  Stack  @  TitanFile   Client   Server   Dispatcher   TornadIO2   Copyright  (c)  2013  TitanFile  Inc.   14  
  • 15. Client-­‐Side  Stack   Copyright  (c)  2013  TitanFile  Inc.   15  
  • 16. Transport  Op4ons  -­‐  Comet   •  HTML5  WebSockets   •  Flash  Socket   •  Long  Polling   –  IFrame   –  Ajax   –  XMLHttpRequest   –  JSONP   Copyright  (c)  2013  TitanFile  Inc.   16  
  • 17. Cross-­‐origin  resource  sharing  (CORS)   Copyright  (c)  2013  TitanFile  Inc.   17  
  • 18. Polling  vs.  WebSockets   Copyright  (c)  2013  TitanFile  Inc.   18  
  • 19. WebSocket  Handshake   Copyright  (c)  2013  TitanFile  Inc.   19  
  • 20. WebSocket  Op4ons   •  Plain  HTML5  WebSockets     •  SockJS   •  Socket.io   Copyright  (c)  2013  TitanFile  Inc.   20  
  • 21. HTML5  WebSockets   •  •  •  •  Open  Connection   Send  message   On  message  event   Close  connection   Copyright  (c)  2013  TitanFile  Inc.   21  
  • 22. SockJS   •  •  •  •  WebSocket  Emulator   Follows  HTML5  WebSocket  API   Cross-­‐domain  support   Polling  as  fallback   Copyright  (c)  2013  TitanFile  Inc.   22  
  • 23. Socket.IO   •  Real-­‐time  Web  App  Protocol   •  Event-­‐based  communication   –  Connection  events   –  Named  events   •  Broadcast   •  Cross-­‐browser  and  platform   •  Server-­‐side  (Node.JS)  and  client-­‐side   Copyright  (c)  2013  TitanFile  Inc.   23  
  • 24. Server-­‐Side  Stack   Copyright  (c)  2013  TitanFile  Inc.   24  
  • 25. Real-­‐Time  Web  Servers   •  Most  modern  languages  …   •  Many  modern  frameworks  …   –  NodeJS   –  Tornado   Copyright  (c)  2013  TitanFile  Inc.   25  
  • 26. The  Flow   Copyright  (c)  2013  TitanFile  Inc.   26  
  • 27. Copyright  (c)  2013  TitanFile  Inc.   27  
  • 28. Copyright  (c)  2013  TitanFile  Inc.   28  
  • 29. More  Detailed  (Useful)  Flow   Copyright  (c)  2013  TitanFile  Inc.   29  
  • 30. Copyright  (c)  2013  TitanFile  Inc.   30  
  • 31. Copyright  (c)  2013  TitanFile  Inc.   31  
  • 32. Pub  Sub  PaPern   •  •  •  •  Decouples  senders  from  receivers   Intermediate  hub   Senders  –  publish  messages  to  a  channel   Receivers  –  subscribe  to  a  channel   Copyright  (c)  2013  TitanFile  Inc.   32  
  • 33. The  Flow  @  TitanFile   Sender  Client   Server   Recipient  Client   User  Action   Django   Model  Saved   Django   post_save   Render   changes   Backbone   Model  Saved   Django   Handler   Django  signal   handler   Backbone   handler   ioSync   Socket.io   TornadIO2   Dispatcher   TorandIO2   Broadcast   ioBind   Socket.io   Copyright  (c)  2013  TitanFile  Inc.   33  
  • 34. Beyond  the  Basics     Real-­‐World  Challenges   Copyright  (c)  2013  TitanFile  Inc.   34  
  • 35. Real  World  Challenges   •  •  •  •  Authentication   Security   Binary  Data  (Files)   Blocking  Code   –  Database,  File  I/O,  Network   •  Scalability   Copyright  (c)  2013  TitanFile  Inc.   35  
  • 36. Authen4ca4on   Copyright  (c)  2013  TitanFile  Inc.   36  
  • 37. Security   Copyright  (c)  2013  TitanFile  Inc.   37  
  • 38. Binary  Data   Copyright  (c)  2013  TitanFile  Inc.   38  
  • 39. Blocking  Code   Copyright  (c)  2013  TitanFile  Inc.   39  
  • 40. Scalability   Copyright  (c)  2013  TitanFile  Inc.   40  
  • 41. Live  Tutorial   https://github.com/mdineen/chatserver   Copyright  (c)  2013  TitanFile  Inc.   41  
  • 42. Tony  Abou-­‐Assaleh  &  Mark  Dineen   https://www.titanFile.com   {taa,mark}@titanFile.com   Twitter:  @tony_aa,  @DineenMa