SlideShare uma empresa Scribd logo
1 de 57
Writing highly scalable WebSocket using the Atmosphere Framework ,[object Object],[object Object]
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],Who is Wordnik
Who I am ,[object Object],Creator of Grizzly Framework
Who I am Creator of Grizzly Framework Significant contributor of GlassFish ,[object Object]
Who I am Creator of Grizzly Framework Significant contributor of GlassFish Creator of the AsyncHttpClient ,[object Object]
Who I am Creator of Grizzly Framework Significant contributor of GlassFish Creator of Atmosphere Creator of the AsyncHttpClient ,[object Object]
Who I am Creator of Grizzly Framework Significant contributor of GlassFish Creator of Atmosphere Creator of the AsyncHttpClient ,[object Object],Tomcat,  Apache Digester, Sitebricks, Jersey, Aether/Maven, etc.
The Atmosphere Framework A Portable Comet Framework
The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0
The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0 Atmosphere Client JQuery Plugin
The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0 Atmosphere Client JQuery Plugin  Support available WebSocket Native API
The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0 Atmosphere Client JQuery Plugin  Support available WebSocket Native API Plugs in for Redis, Active MQ (JMS), JGroups, XMPP, etc.
The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0 Atmosphere Client JQuery Plugin  Support available WebSocket Native API Plugs in for Redis, Active MQ (JMS), JGroups, XMPP, etc.  Supported/Integrated by almost all major frameworks and javascript library
The Atmosphere Framework WebSocket Spec is evolving fast on both Browser and Server Side
The Atmosphere Framework WebSocket Spec is evolving fast on both Browser and Server Side Chrome/Safari/Opera: WebSocket FF: MozWebSocket IE: (crikets … ~10)
The Atmosphere Framework WebSocket Spec is evolving fast on both Browser and Server Side Chrome/Safari/Opera: WebSocket FF: MozWebSocket IE: (crikets … ~10) Atmosphere JQuery Plug In hide that and propose a uniform API
The Atmosphere Framework WebSocket Spec is evolving fast on both Browser and Server Side Chrome/Safari/Opera: WebSocket FF: MozWebSocket IE: (crikets … ~10) Atmosphere JQuery Plug In hide that and propose a uniform API Decide the best transport, negociate it with the server
Java Landscape Jetty 7.0: First to Support WebSocket
Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility
Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change
Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support
Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes
Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes Tomcat 7 zzzzzzzzzzzz
Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes Tomcat 7 zzzzzzzzzzzz WOUAAAAAAAAAAAAAAA Atmosphere to the rescue!!
Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes Tomcat 7 zzzzzzzzzzzz WOUAAAAAAAAAAAAAAA Atmosphere to the rescue!! Are you crazy enough to rewrite your entire app?
Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes Tomcat 7 zzzzzzzzzzzz WOUAAAAAAAAAAAAAAA Atmosphere to the rescue!! Are you  crazy  enough to rewrite your entire app? Really want to use  proprietary  solution like ?
How? Integrate with  all  framework? Check!
How? Integrate with  all  framework? Check! Want Servlet API? Check!
How? Integrate with  all  framework? Check! Want Servlet API? Check! Want REST like API? Check!
How? Integrate with  all  framework? Check! Want Servlet API? Check! Want REST like API? Check! Fallback to Comet? Check!
How? Integrate with  all  framework? Check! Want Servlet API? Check! Want REST like API? Check! Fallback to Comet? Check! Pure WebSocket? Check!
How? Integrate with  all  framework? Check! Want Servlet API? Check! Want REST like API? Check! Fallback to Comet? Check! Pure WebSocket? Check! WebSocket Sub Protocol? Check
How? Integrate with  all  framework? Check! Want Servlet API? Check! Want REST like API? Check! Fallback to Comet? Check! Pure WebSocket? Check! WebSocket Sub Protocol? Check Atmosphere provides a uniform API and hides the underlying transport details (async I/O included)
Concepts Upgrade/Suspend
Concepts Upgrade/Suspend Broadcast
Concepts Upgrade/Suspend Broadcast Resume
Concepts Upgrade/Suspend Broadcast Resume Client choose the best technique  (ws or comet) Async I/O (Input/Output Stream)
Concepts Upgrade/Suspend Broadcast Resume Cloud enabled (zzzzzz) Async I/O (Input/Output Stream) Survive Proxy Cloud Enabled
Zzzzzzzzz Enough Bla Bla Bla, let ’s do Scala!
API Atmosphere Handler
API Jersey to the rescue! (@ and Prog API) Atmosphere Handler
API Atmosphere Handler WebSocket Protocol Jersey to the rescue! (@ and Prog API)
API Atmosphere Handler WebSocket Protocol Servlet API Jersey to the rescue! (@ and Prog API)
The Demo Jetty 8 Tomcat 6 Redis Chrome Redis CLI Safari WebSocket WebSocket FAIL -> Streaming Broadcaster Broadcaster
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],2005- AtmosphereHandler http://is.gd/hH3AaH
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],1999 – Servlet API http://is.gd/GcnG0A
[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],2007 – REST API http://is.gd/Df9Uvm
2011 – WebSocket API http://is.gd/SEa4AK
2011 – Client API http://is.gd/9jumKt
SwaggerSocket Protocol HTTP/REST Over WebSocket
SwaggerSocket Protocol HTTP/REST Over WebSocket JSON based protocol
SwaggerSocket Protocol HTTP/REST Over WebSocket JSON based protocol Support Pipelined Requests
SwaggerSocket Protocol HTTP/REST Over WebSocket JSON based protocol Support Pipelined Requests Fully ASYNCHRONOUS
SwaggerSocket Protocol HTTP/REST Over WebSocket JSON based protocol Support Pipelined Request Fully ASYNCHRONOUS ,[object Object],[object Object],[object Object]
SwaggerSocket Protocol WebServer Atmosphere WebSocket WebSocket Protocol Jersey REST Resource
[object Object],Benchmark
[object Object],[object Object],[object Object],[object Object],[object Object],Conclusion

Mais conteúdo relacionado

Mais procurados

0-60 with Goliath: High performance web services
0-60 with Goliath: High performance web services0-60 with Goliath: High performance web services
0-60 with Goliath: High performance web services
Ilya Grigorik
 
Spring Boot & WebSocket
Spring Boot & WebSocketSpring Boot & WebSocket
Spring Boot & WebSocket
Ming-Ying Wu
 
Ruby HTTP clients comparison
Ruby HTTP clients comparisonRuby HTTP clients comparison
Ruby HTTP clients comparison
Hiroshi Nakamura
 

Mais procurados (20)

Asynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and JavaAsynchronous Web Programming with HTML5 WebSockets and Java
Asynchronous Web Programming with HTML5 WebSockets and Java
 
0-60 with Goliath: High performance web services
0-60 with Goliath: High performance web services0-60 with Goliath: High performance web services
0-60 with Goliath: High performance web services
 
Ruby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.com
Ruby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.comRuby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.com
Ruby Proxies for Scale, Performance, and Monitoring - GoGaRuCo - igvita.com
 
Building Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSocketsBuilding Real-Time Applications with Android and WebSockets
Building Real-Time Applications with Android and WebSockets
 
Servers with Event Machine - David Troy - RailsConf 2011
Servers with Event Machine - David Troy - RailsConf 2011Servers with Event Machine - David Troy - RailsConf 2011
Servers with Event Machine - David Troy - RailsConf 2011
 
GWT Web Socket and data serialization
GWT Web Socket and data serializationGWT Web Socket and data serialization
GWT Web Socket and data serialization
 
Ruby Proxies for Scale, Performance, and Monitoring
Ruby Proxies for Scale, Performance, and MonitoringRuby Proxies for Scale, Performance, and Monitoring
Ruby Proxies for Scale, Performance, and Monitoring
 
Speedy TDD with Rails
Speedy TDD with RailsSpeedy TDD with Rails
Speedy TDD with Rails
 
Spring Boot & WebSocket
Spring Boot & WebSocketSpring Boot & WebSocket
Spring Boot & WebSocket
 
WebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! FrameworkWebSockets wiith Scala and Play! Framework
WebSockets wiith Scala and Play! Framework
 
Beyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic AnalysisBeyond Breakpoints: A Tour of Dynamic Analysis
Beyond Breakpoints: A Tour of Dynamic Analysis
 
Building Next Generation Real-Time Web Applications using Websockets
Building Next Generation Real-Time Web Applications using WebsocketsBuilding Next Generation Real-Time Web Applications using Websockets
Building Next Generation Real-Time Web Applications using Websockets
 
Solving anything in VCL
Solving anything in VCLSolving anything in VCL
Solving anything in VCL
 
Event Driven Architecture - MeshU - Ilya Grigorik
Event Driven Architecture - MeshU - Ilya GrigorikEvent Driven Architecture - MeshU - Ilya Grigorik
Event Driven Architecture - MeshU - Ilya Grigorik
 
Using Websockets with Play!
Using Websockets with Play!Using Websockets with Play!
Using Websockets with Play!
 
Ruby HTTP clients comparison
Ruby HTTP clients comparisonRuby HTTP clients comparison
Ruby HTTP clients comparison
 
Implementing Comet using PHP
Implementing Comet using PHPImplementing Comet using PHP
Implementing Comet using PHP
 
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
[1D1]신개념 N스크린 웹 앱 프레임워크 PARS
 
A Heart Rate Validating Admission Webhook
A Heart Rate Validating Admission WebhookA Heart Rate Validating Admission Webhook
A Heart Rate Validating Admission Webhook
 
Websockets and SockJS, Real time chatting
Websockets and SockJS, Real time chattingWebsockets and SockJS, Real time chatting
Websockets and SockJS, Real time chatting
 

Destaque

Hyperdex - A closer look
Hyperdex - A closer lookHyperdex - A closer look
Hyperdex - A closer look
DECK36
 
Blazes: coordination analysis for distributed programs
Blazes: coordination analysis for distributed programsBlazes: coordination analysis for distributed programs
Blazes: coordination analysis for distributed programs
palvaro
 
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsIn Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
Spike Brehm
 
Erlang plus BDB: Disrupting the Conventional Web Wisdom
Erlang plus BDB: Disrupting the Conventional Web WisdomErlang plus BDB: Disrupting the Conventional Web Wisdom
Erlang plus BDB: Disrupting the Conventional Web Wisdom
guest3933de
 
AST - the only true tool for building JavaScript
AST - the only true tool for building JavaScriptAST - the only true tool for building JavaScript
AST - the only true tool for building JavaScript
Ingvar Stepanyan
 

Destaque (20)

Riak Search - Erlang Factory London 2010
Riak Search - Erlang Factory London 2010Riak Search - Erlang Factory London 2010
Riak Search - Erlang Factory London 2010
 
Brunch With Coffee
Brunch With CoffeeBrunch With Coffee
Brunch With Coffee
 
Hyperdex - A closer look
Hyperdex - A closer lookHyperdex - A closer look
Hyperdex - A closer look
 
Chloe and the Realtime Web
Chloe and the Realtime WebChloe and the Realtime Web
Chloe and the Realtime Web
 
LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013LXC, Docker, and the future of software delivery | LinuxCon 2013
LXC, Docker, and the future of software delivery | LinuxCon 2013
 
Blazes: coordination analysis for distributed programs
Blazes: coordination analysis for distributed programsBlazes: coordination analysis for distributed programs
Blazes: coordination analysis for distributed programs
 
ElasticSearch - index server used as a document database
ElasticSearch - index server used as a document databaseElasticSearch - index server used as a document database
ElasticSearch - index server used as a document database
 
(Functional) reactive programming (@pavlobaron)
(Functional) reactive programming (@pavlobaron)(Functional) reactive programming (@pavlobaron)
(Functional) reactive programming (@pavlobaron)
 
Complex Legacy System Archiving/Data Retention with MongoDB and Xquery
Complex Legacy System Archiving/Data Retention with MongoDB and XqueryComplex Legacy System Archiving/Data Retention with MongoDB and Xquery
Complex Legacy System Archiving/Data Retention with MongoDB and Xquery
 
Spring Cleaning for Your Smartphone
Spring Cleaning for Your SmartphoneSpring Cleaning for Your Smartphone
Spring Cleaning for Your Smartphone
 
NkSIP: The Erlang SIP application server
NkSIP: The Erlang SIP application serverNkSIP: The Erlang SIP application server
NkSIP: The Erlang SIP application server
 
Web-Oriented Architecture (WOA)
Web-Oriented Architecture (WOA)Web-Oriented Architecture (WOA)
Web-Oriented Architecture (WOA)
 
Scalable XQuery Processing with Zorba on top of MongoDB
Scalable XQuery Processing with Zorba on top of MongoDBScalable XQuery Processing with Zorba on top of MongoDB
Scalable XQuery Processing with Zorba on top of MongoDB
 
Interoperability With RabbitMq
Interoperability With RabbitMqInteroperability With RabbitMq
Interoperability With RabbitMq
 
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript AppsIn Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
In Pursuit of the Holy Grail: Building Isomorphic JavaScript Apps
 
Erlang plus BDB: Disrupting the Conventional Web Wisdom
Erlang plus BDB: Disrupting the Conventional Web WisdomErlang plus BDB: Disrupting the Conventional Web Wisdom
Erlang plus BDB: Disrupting the Conventional Web Wisdom
 
Shrinking the Haystack" using Solr and OpenNLP
Shrinking the Haystack" using Solr and OpenNLPShrinking the Haystack" using Solr and OpenNLP
Shrinking the Haystack" using Solr and OpenNLP
 
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
Scaling Gilt: from Monolithic Ruby Application to Distributed Scala Micro-Ser...
 
AST - the only true tool for building JavaScript
AST - the only true tool for building JavaScriptAST - the only true tool for building JavaScript
AST - the only true tool for building JavaScript
 
Erlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughputErlang as a cloud citizen, a fractal approach to throughput
Erlang as a cloud citizen, a fractal approach to throughput
 

Semelhante a Writing highly scalable WebSocket using the Atmosphere Framework and Scala

Understanding ASP.NET Under The Cover - Miguel A. Castro
Understanding ASP.NET Under The Cover - Miguel A. CastroUnderstanding ASP.NET Under The Cover - Miguel A. Castro
Understanding ASP.NET Under The Cover - Miguel A. Castro
Mohammad Tayseer
 
Ring: Web Apps in Idiomatic Clojure
Ring: Web Apps in Idiomatic ClojureRing: Web Apps in Idiomatic Clojure
Ring: Web Apps in Idiomatic Clojure
Mark McGranaghan
 
The future of server side JavaScript
The future of server side JavaScriptThe future of server side JavaScript
The future of server side JavaScript
Oleg Podsechin
 
Plack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and serversPlack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and servers
Tatsuhiko Miyagawa
 
WSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected Business
WSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected BusinessWSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected Business
WSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected Business
WSO2
 

Semelhante a Writing highly scalable WebSocket using the Atmosphere Framework and Scala (20)

Clojure and the Web
Clojure and the WebClojure and the Web
Clojure and the Web
 
Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017Front End Development for Back End Developers - UberConf 2017
Front End Development for Back End Developers - UberConf 2017
 
sMash at May NYPHP UG
sMash at May NYPHP UGsMash at May NYPHP UG
sMash at May NYPHP UG
 
1 java servlets and jsp
1   java servlets and jsp1   java servlets and jsp
1 java servlets and jsp
 
Understanding ASP.NET Under The Cover - Miguel A. Castro
Understanding ASP.NET Under The Cover - Miguel A. CastroUnderstanding ASP.NET Under The Cover - Miguel A. Castro
Understanding ASP.NET Under The Cover - Miguel A. Castro
 
Ring: Web Apps in Idiomatic Clojure
Ring: Web Apps in Idiomatic ClojureRing: Web Apps in Idiomatic Clojure
Ring: Web Apps in Idiomatic Clojure
 
The future of server side JavaScript
The future of server side JavaScriptThe future of server side JavaScript
The future of server side JavaScript
 
Servlet
Servlet Servlet
Servlet
 
Knowledge Sharing : Java Servlet
Knowledge Sharing : Java ServletKnowledge Sharing : Java Servlet
Knowledge Sharing : Java Servlet
 
Java servlets
Java servletsJava servlets
Java servlets
 
Java Servlets
Java ServletsJava Servlets
Java Servlets
 
Sun Web Server Brief
Sun Web Server BriefSun Web Server Brief
Sun Web Server Brief
 
Servlets
ServletsServlets
Servlets
 
Plack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and serversPlack perl superglue for web frameworks and servers
Plack perl superglue for web frameworks and servers
 
Using eZ Platform in an API Era
Using eZ Platform in an API EraUsing eZ Platform in an API Era
Using eZ Platform in an API Era
 
WSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected Business
WSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected BusinessWSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected Business
WSO2Con Asia 2014 - WSO2 AppDev Platform for the Connected Business
 
WSO2 AppDev platform
WSO2 AppDev platformWSO2 AppDev platform
WSO2 AppDev platform
 
LAJUG Napster REST API
LAJUG Napster REST APILAJUG Napster REST API
LAJUG Napster REST API
 
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
Choose Your Own Adventure with JHipster & Kubernetes - Denver JUG 2020
 
Servlet by Rj
Servlet by RjServlet by Rj
Servlet by Rj
 

Último

Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
panagenda
 
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
Safe Software
 

Último (20)

A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
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...
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
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
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
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
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 
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
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
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
 
MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024MINDCTI Revenue Release Quarter One 2024
MINDCTI Revenue Release Quarter One 2024
 
Artificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : UncertaintyArtificial Intelligence Chap.5 : Uncertainty
Artificial Intelligence Chap.5 : Uncertainty
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
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?
 
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
 

Writing highly scalable WebSocket using the Atmosphere Framework and Scala

  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8. The Atmosphere Framework A Portable Comet Framework
  • 9. The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0
  • 10. The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0 Atmosphere Client JQuery Plugin
  • 11. The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0 Atmosphere Client JQuery Plugin Support available WebSocket Native API
  • 12. The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0 Atmosphere Client JQuery Plugin Support available WebSocket Native API Plugs in for Redis, Active MQ (JMS), JGroups, XMPP, etc.
  • 13. The Atmosphere Framework A Portable Comet Framework Support All native Comet API and Servlet 3.0 Atmosphere Client JQuery Plugin Support available WebSocket Native API Plugs in for Redis, Active MQ (JMS), JGroups, XMPP, etc. Supported/Integrated by almost all major frameworks and javascript library
  • 14. The Atmosphere Framework WebSocket Spec is evolving fast on both Browser and Server Side
  • 15. The Atmosphere Framework WebSocket Spec is evolving fast on both Browser and Server Side Chrome/Safari/Opera: WebSocket FF: MozWebSocket IE: (crikets … ~10)
  • 16. The Atmosphere Framework WebSocket Spec is evolving fast on both Browser and Server Side Chrome/Safari/Opera: WebSocket FF: MozWebSocket IE: (crikets … ~10) Atmosphere JQuery Plug In hide that and propose a uniform API
  • 17. The Atmosphere Framework WebSocket Spec is evolving fast on both Browser and Server Side Chrome/Safari/Opera: WebSocket FF: MozWebSocket IE: (crikets … ~10) Atmosphere JQuery Plug In hide that and propose a uniform API Decide the best transport, negociate it with the server
  • 18. Java Landscape Jetty 7.0: First to Support WebSocket
  • 19. Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility
  • 20. Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change
  • 21. Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support
  • 22. Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes
  • 23. Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes Tomcat 7 zzzzzzzzzzzz
  • 24. Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes Tomcat 7 zzzzzzzzzzzz WOUAAAAAAAAAAAAAAA Atmosphere to the rescue!!
  • 25. Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes Tomcat 7 zzzzzzzzzzzz WOUAAAAAAAAAAAAAAA Atmosphere to the rescue!! Are you crazy enough to rewrite your entire app?
  • 26. Java Landscape Jetty 7.0: First to Support WebSocket Jetty 7.2.x -> API Changes, break compatibility Jetty 7.4.5 and 8.0.2 and up: Spec change GlassFish 3.0 -> some support GlassFish 3.1.2 -> API Changes Tomcat 7 zzzzzzzzzzzz WOUAAAAAAAAAAAAAAA Atmosphere to the rescue!! Are you crazy enough to rewrite your entire app? Really want to use proprietary solution like ?
  • 27. How? Integrate with all framework? Check!
  • 28. How? Integrate with all framework? Check! Want Servlet API? Check!
  • 29. How? Integrate with all framework? Check! Want Servlet API? Check! Want REST like API? Check!
  • 30. How? Integrate with all framework? Check! Want Servlet API? Check! Want REST like API? Check! Fallback to Comet? Check!
  • 31. How? Integrate with all framework? Check! Want Servlet API? Check! Want REST like API? Check! Fallback to Comet? Check! Pure WebSocket? Check!
  • 32. How? Integrate with all framework? Check! Want Servlet API? Check! Want REST like API? Check! Fallback to Comet? Check! Pure WebSocket? Check! WebSocket Sub Protocol? Check
  • 33. How? Integrate with all framework? Check! Want Servlet API? Check! Want REST like API? Check! Fallback to Comet? Check! Pure WebSocket? Check! WebSocket Sub Protocol? Check Atmosphere provides a uniform API and hides the underlying transport details (async I/O included)
  • 37. Concepts Upgrade/Suspend Broadcast Resume Client choose the best technique (ws or comet) Async I/O (Input/Output Stream)
  • 38. Concepts Upgrade/Suspend Broadcast Resume Cloud enabled (zzzzzz) Async I/O (Input/Output Stream) Survive Proxy Cloud Enabled
  • 39. Zzzzzzzzz Enough Bla Bla Bla, let ’s do Scala!
  • 41. API Jersey to the rescue! (@ and Prog API) Atmosphere Handler
  • 42. API Atmosphere Handler WebSocket Protocol Jersey to the rescue! (@ and Prog API)
  • 43. API Atmosphere Handler WebSocket Protocol Servlet API Jersey to the rescue! (@ and Prog API)
  • 44. The Demo Jetty 8 Tomcat 6 Redis Chrome Redis CLI Safari WebSocket WebSocket FAIL -> Streaming Broadcaster Broadcaster
  • 45.
  • 46.
  • 47.
  • 48. 2011 – WebSocket API http://is.gd/SEa4AK
  • 49. 2011 – Client API http://is.gd/9jumKt
  • 51. SwaggerSocket Protocol HTTP/REST Over WebSocket JSON based protocol
  • 52. SwaggerSocket Protocol HTTP/REST Over WebSocket JSON based protocol Support Pipelined Requests
  • 53. SwaggerSocket Protocol HTTP/REST Over WebSocket JSON based protocol Support Pipelined Requests Fully ASYNCHRONOUS
  • 54.
  • 55. SwaggerSocket Protocol WebServer Atmosphere WebSocket WebSocket Protocol Jersey REST Resource
  • 56.
  • 57.