SlideShare a Scribd company logo
1 of 71
Download to read offline
A few words about 
MoscowJS, july 2014 Konstantin Burkalev, @KSDaemon
WAMP 
≠ 
Windows, Apache, 
MySQL, PHP
WAMP 
= 
Application level protocol, " 
implementing 2 patterns: 
• Publish/Subscribe (PubSub)" 
• Remote Procedure Calls (RPC)
Basic components and definitions 
• Resource identifier 
• Transport 
• Serializer 
• Session 
• Realm - domain, namespace 
• Peer 
• Client 
• Router 
• Role
Architecture
Resource identifiers 
Required for: 
• Subscriptions 
• Procedures 
• Errors 
are URI-based 
• system.send.file 
• chat.message 
• users.admins.message 
• user.profile.updated
Serialization and data types 
Supported serializers: 
• JSON • MsgPack 
Supported data types: 
Required: Additional: 
• integer 
• string 
• bool 
• list (array) 
• dict 
any, depends on 
serializer
Messages and payload 
• [HELLO, 
Realm|uri, 
Details|dict] 
" 
• [PUBLISH, 
Request|id, 
Options|dict, 
Topic|uri] 
• [PUBLISH, 
Request|id, 
Options|dict, 
Topic|uri, 
Arguments|list] 
• [PUBLISH, 
Request|id, 
Options|dict, 
Topic|uri, 
Arguments|list, 
ArgumentsKw|dict] 
" 
• [CALL, 
Request|id, 
Options|dict, 
Procedure|uri] 
• [CALL, 
Request|id, 
Options|dict, 
Procedure|uri, 
Arguments|list] 
• [CALL, 
Request|id, 
Options|dict, 
Procedure|uri, 
Arguments|list, 
ArgumentsKw|dict] 
" 
• [RESULT, 
CALL.Request|id, 
Details|dict] 
• [RESULT, 
CALL.Request|id, 
Details|dict, 
YIELD.Arguments|list] 
• [RESULT, 
CALL.Request|id, 
Details|dict, 
YIELD.Arguments|list, 
YIELD.ArgumentsKw|dict] 
Payload may be supplied as: 
• Array | List 
• Hash-table | Dictionary
Transport 
• Based on messages 
• Messages are ordered 
• Bidirectional message flow 
• Websocket 
• Raw TCP 
• HTTP long-polling (under dev) 
• Unix sockets
Transport and Session 
Client Router
Transport and Session 
Client Router 
HELLO
Transport and Session 
Client Router 
HELLO 
WELCOME
Transport and Session 
Client Router 
HELLO 
WELCOME 
ABORT
Transport and Session 
Client Router 
HELLO 
WELCOME 
ABORT 
GOODBYE
Transport and Session 
Client Router 
HELLO 
WELCOME 
ABORT 
GOODBYE 
GOODBYE
Transport and Session 
Client Router 
HELLO 
WELCOME 
ABORT 
GOODBYE 
GOODBYE 
GOODBYE
Transport and Session 
Client Router 
HELLO 
WELCOME 
ABORT 
GOODBYE 
GOODBYE 
GOODBYE 
GOODBYE
Publish / Subscribe 
Publisher Broker Subscriber
Publish / Subscribe 
Publisher Broker Subscriber 
SUBSCRIBE
Publish / Subscribe 
Publisher Broker Subscriber 
SUBSCRIBE 
SUBSCRIBED
Publish / Subscribe 
Publisher Broker Subscriber 
SUBSCRIBE 
SUBSCRIBED 
ERROR
Publish / Subscribe 
Publisher Broker Subscriber 
SUBSCRIBE 
SUBSCRIBED 
ERROR 
PUBLISH
Publish / Subscribe 
Publisher Broker Subscriber 
SUBSCRIBE 
SUBSCRIBED 
ERROR 
PUBLISH 
PUBLISHED
Publish / Subscribe 
Publisher Broker Subscriber 
SUBSCRIBE 
SUBSCRIBED 
ERROR 
PUBLISH 
PUBLISHED 
ERROR
Publish / Subscribe 
Publisher Broker Subscriber 
SUBSCRIBE 
SUBSCRIBED 
ERROR 
PUBLISH 
PUBLISHED 
ERROR 
EVENT
Publish / Subscribe 
Publisher Broker Subscriber 
SUBSCRIBE 
SUBSCRIBED 
ERROR 
UNSUBSCRIBE 
PUBLISH 
PUBLISHED 
ERROR 
EVENT
Publish / Subscribe 
Publisher Broker Subscriber 
SUBSCRIBE 
SUBSCRIBED 
ERROR 
UNSUBSCRIBE 
UNSUBSCRIBED 
PUBLISH 
PUBLISHED 
ERROR 
EVENT
Publish / Subscribe 
Publisher Broker Subscriber 
SUBSCRIBE 
SUBSCRIBED 
ERROR 
UNSUBSCRIBE 
UNSUBSCRIBED 
ERROR 
PUBLISH 
PUBLISHED 
ERROR 
EVENT
Remote Procedure Calls 
Caller Dealer Callee
Remote Procedure Calls 
Caller Dealer Callee 
REGISTER
Remote Procedure Calls 
Caller Dealer Callee 
REGISTER 
REGISTERED
Remote Procedure Calls 
Caller Dealer Callee 
REGISTER 
REGISTERED 
ERROR
Remote Procedure Calls 
Caller Dealer Callee 
REGISTER 
REGISTERED 
ERROR 
CALL
Remote Procedure Calls 
Caller Dealer Callee 
REGISTER 
REGISTERED 
ERROR 
CALL 
INVOCATION
Remote Procedure Calls 
Caller Dealer Callee 
REGISTER 
REGISTERED 
ERROR 
CALL 
INVOCATION 
YIELD
Remote Procedure Calls 
Caller Dealer Callee 
REGISTER 
REGISTERED 
ERROR 
CALL 
INVOCATION 
YIELD 
ERROR
Remote Procedure Calls 
Caller Dealer Callee 
REGISTER 
REGISTERED 
ERROR 
CALL 
RESULT 
INVOCATION 
YIELD 
ERROR
Remote Procedure Calls 
Caller Dealer Callee 
REGISTER 
REGISTERED 
ERROR 
CALL 
RESULT 
INVOCATION 
YIELD 
ERROR 
ERROR
Remote Procedure Calls 
Caller Dealer Callee 
REGISTER 
REGISTERED 
ERROR 
UNREGISTER 
CALL 
RESULT 
INVOCATION 
YIELD 
ERROR 
ERROR
Remote Procedure Calls 
Caller Dealer Callee 
REGISTER 
REGISTERED 
ERROR 
UNREGISTER 
UNREGISTERED 
CALL 
RESULT 
INVOCATION 
YIELD 
ERROR 
ERROR
Remote Procedure Calls 
Caller Dealer Callee 
REGISTER 
REGISTERED 
ERROR 
UNREGISTER 
UNREGISTERED 
ERROR 
CALL 
RESULT 
INVOCATION 
YIELD 
ERROR 
ERROR
Profiles 
Set of features within each pattern 
(PubSub, RPC) 
• Basic profile 
• Advanced profile
Advanced profile 
• Session Management 
• Authentication 
• Heartbeat
Advanced profile 
• Publish / Subscribe 
• Black/white lists 
• Publisher identification 
• Pattern-based subscriptions 
• Meta events 
• Subscriber list 
• Events list
Advanced profile 
• Remote Procedure Calls 
• black/white lists 
• Caller identification 
• Pattern-based RPC registration 
• Canceling calls 
• Progressive calls
Usage example 
Online consultant 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
Browser 
Backoffice 
app 
client 
Browser 
Backoffice 
app 
client 
WAMP Router 
(realm 1) 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
WAMP Router 
(realm 2)
Usage example 
Online consultant 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
Browser 
Backoffice 
app 
client 
Browser 
Backoffice 
app 
client 
WAMP Router 
(realm 1) 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
subscribe to ‘ready.for.chat’ 
subscribe to ‘ready.for.chat’ 
WAMP Router 
(realm 2)
Usage example 
Online consultant 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
Browser 
Backoffice 
app 
client 
Browser 
Backoffice 
app 
client 
WAMP Router 
(realm 1) 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
WAMP Router 
(realm 2) 
subscribe to ‘chat.taken’ 
subscribe to ‘chat.taken’
Usage example 
Online consultant 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
Browser 
Backoffice 
app 
client 
Browser 
Backoffice 
app 
client 
WAMP Router 
(realm 1) 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
subscribe to ‘user.chat.id1235’ 
WAMP Router 
(realm 2)
Usage example 
Online consultant 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
Browser 
Backoffice 
app 
client 
Browser 
Backoffice 
app 
client 
WAMP Router 
(realm 1) 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
publish event to ‘ready.for.chat’ 
WAMP Router 
(realm 2)
Usage example 
Online consultant 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
Browser 
Backoffice 
app 
client 
Browser 
Backoffice 
app 
client 
WAMP Router 
(realm 1) 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
receive event in ‘ready.for.chat’ 
receive event in ‘ready.for.chat’ 
WAMP Router 
(realm 2)
Usage example 
Online consultant 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
Browser 
Backoffice 
app 
client 
Browser 
Backoffice 
app 
client 
WAMP Router 
(realm 1) 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
publish event to ‘chat.taken’ 
WAMP Router 
(realm 2)
Usage example 
Online consultant 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
Browser 
Backoffice 
app 
client 
Browser 
Backoffice 
app 
client 
WAMP Router 
(realm 1) 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
receive event in ‘chat.taken’ 
WAMP Router 
(realm 2)
Usage example 
Online consultant 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
Browser 
Backoffice 
app 
client 
Browser 
Backoffice 
app 
client 
WAMP Router 
(realm 1) 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
publish event to ‘user.chat.id1235’ 
WAMP Router 
(realm 2)
Usage example 
Online consultant 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
Browser 
Backoffice 
app 
client 
Browser 
Backoffice 
app 
client 
WAMP Router 
(realm 1) 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
receive event in ‘user.chat.id1235’ 
WAMP Router 
(realm 2)
Usage example 
Online consultant 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
Browser 
Backoffice 
app 
client 
Browser 
Backoffice 
app 
client 
WAMP Router 
(realm 1) 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
subscribe to ‘user.chat.id2425’ 
WAMP Router 
(realm 2)
Usage example 
Online consultant 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
Browser 
Backoffice 
app 
client 
Browser 
Backoffice 
app 
client 
WAMP Router 
(realm 1) 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
publish event to ‘ready.for.chat’ 
WAMP Router 
(realm 2)
Usage example 
Online consultant 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
Browser 
Backoffice 
app 
client 
Browser 
Backoffice 
app 
client 
WAMP Router 
(realm 1) 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
receive event in ‘ready.for.chat’ 
receive event in ‘ready.for.chat’ 
WAMP Router 
(realm 2)
Usage example 
Online consultant 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
Browser 
Backoffice 
app 
client 
Browser 
Backoffice 
app 
client 
WAMP Router 
(realm 1) 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
publish event to ‘chat.taken’ 
WAMP Router 
(realm 2)
Usage example 
Online consultant 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
Browser 
Backoffice 
app 
client 
Browser 
Backoffice 
app 
client 
WAMP Router 
(realm 1) 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
receive event in ‘chat.taken’ 
WAMP Router 
(realm 2)
Usage example 
Online consultant 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
Browser 
Backoffice 
app 
client 
Browser 
Backoffice 
app 
client 
WAMP Router 
(realm 1) 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
publish event to ‘user.chat.id2425’ 
WAMP Router 
(realm 2)
Usage example 
Online consultant 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
Browser 
Backoffice 
app 
client 
Browser 
Backoffice 
app 
client 
WAMP Router 
(realm 1) 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
receive event in ‘user.chat.id2425’ 
WAMP Router 
(realm 2)
Usage example 
Online consultant 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
Browser 
Backoffice 
app 
client 
Browser 
Backoffice 
app 
client 
WAMP Router 
(realm 1) 
Browser 
Embedded 
app 
client 
Browser 
Embedded 
app 
client 
WAMP Router 
(realm 2)
Usage example 
Browser 
Browser 
Integration solution 
Server side infrastructure 
WAMP Router 
Mobile 
Desktop 
SUBSCRIBE to TOPICs 
REGISTER RPC 
REGISTER RPC 
REGISTER RPC 
SUBSCRIBE to TOPICs 
Internal 
service 1 
Internal 
service 2 
Internal 
service 3 
Frontoffice 
app 
client 
Frontoffice 
app 
client 
CRUD 
Nginx / HAProxy 
CRUD 
CRUD 
Backoffice 
app 
client SUBSCRIBE to TOPICs 
PUBLISH Event 
PUBLISH Event 
CALL RPCs 
Nginx / HAProxy 
Backoffice 
app 
client 
DB 
CRUD 
CRUD 
Backoffice app 
serverside 
Frontoffice app 
serverside
Usage example 
WAMP as a platform for SOA solutions 
Consumer 1 Consumer 2 Consumer 3 Consumer 4 Consumer 5 
Provides RPC 
Call RPC 
Publish events 
Subscribe to topics 
Call RPC 
Provides RPC 
Publish events 
Service 
Provider 1 
Service 
Provider 2 
Service 
Provider 3 
Service 
Provider 4 
Service 
Provider 5 
Publish events 
WAMP Router 
(realm 1, realm 2, realm 3, ....) 
Subscribe to topics 
Publish events
Usage example 
WAMP as a platform for SOA solutions 
• Unified service bus 
• Asynchronous procedures execution 
• Standardization of interaction interfaces 
• Minimal overhead 
• Flexible infrastructure 
• Isolation and loose coupling of services 
• Easy to connect new services
Implementations 
• JavaScript! 
• Autobahn|JS (browser, node.js) 
• Wampy.js (browser) 
• Java! 
• Autobahn|Android (soon) 
• .NET! 
• WampSharp (under dev) 
• PHP! 
• Thurway 
Clients 
• Python! 
• Autobahn|Python 
• C++! 
• Autobahn|Cpp 
• Erlang! 
• Erwa 
• Objective-C! 
• MDWamp 
• Lua (under dev) 
Routers 
• Python! 
• Autobahn|Python 
• Crossbar.io 
• Erlang! 
• Erwa 
• PHP! 
• Thurway 
• Lua! 
• Wiola
Conclusion 
• Simple and open protocol 
• RPC + PubSub out of the box 
• Unified routing 
• Transport and serialization for every taste 
• Minimal overhead 
• Native use in web applications 
• Allows you to build distributed applications with 
loosely coupled components 
• Many implementations in different languages 
• Open source & community
Useful links 
• http://wamp.ws! 
• Description 
• Specification 
• Implementations 
• https://groups.google.com/group/wampws 
• http://autobahn.ws 
• https://github.com/crossbario/crossbar/wiki 
• Crossbar.io 
• Client examples in different languages
That’s all folks!" 
Any questions 
?
Konstantin Burkalev 
Thank you! 
• Mail: kostik@ksdaemon.ru 
• Twitter: @KSDaemon 
• GitHub: KSDaemon 
• Blog: blog.ksdaemon.ru

More Related Content

What's hot

Why we choose Symfony2
Why we choose Symfony2Why we choose Symfony2
Why we choose Symfony2Merixstudio
 
Building a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQueryBuilding a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQueryTatsuhiko Miyagawa
 
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 AnalysisFastly
 
Ruby C10K: High Performance Networking - RubyKaigi '09
Ruby C10K: High Performance Networking - RubyKaigi '09Ruby C10K: High Performance Networking - RubyKaigi '09
Ruby C10K: High Performance Networking - RubyKaigi '09Ilya Grigorik
 
Communication in Python and the C10k problem
Communication in Python and the C10k problemCommunication in Python and the C10k problem
Communication in Python and the C10k problemJose Galarza
 
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 JavaJames Falkner
 
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.comIlya Grigorik
 
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse ProxyApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse ProxyJim Jagielski
 
Websockets on the JVM: Atmosphere to the rescue!
Websockets on the JVM: Atmosphere to the rescue!Websockets on the JVM: Atmosphere to the rescue!
Websockets on the JVM: Atmosphere to the rescue!jfarcand
 
Jabber is more than instant messaging
Jabber is more than instant messagingJabber is more than instant messaging
Jabber is more than instant messagingFlorian Holzhauer
 
Building WebSocket and Server Side Events Applications using Atmosphere
Building WebSocket and Server Side Events Applications using AtmosphereBuilding WebSocket and Server Side Events Applications using Atmosphere
Building WebSocket and Server Side Events Applications using Atmospherejfarcand
 
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 MonitoringIlya Grigorik
 
0-60 with Goliath: Building High Performance Ruby Web-Services
0-60 with Goliath: Building High Performance Ruby Web-Services0-60 with Goliath: Building High Performance Ruby Web-Services
0-60 with Goliath: Building High Performance Ruby Web-ServicesIlya Grigorik
 
Real-time Ruby for the Real-time Web
Real-time Ruby for the Real-time WebReal-time Ruby for the Real-time Web
Real-time Ruby for the Real-time WebIlya Grigorik
 
Reverse ajax in 2014
Reverse ajax in 2014Reverse ajax in 2014
Reverse ajax in 2014Nenad Pecanac
 
The Atmosphere Framework
The Atmosphere FrameworkThe Atmosphere Framework
The Atmosphere Frameworkjfarcand
 
Writing highly scalable WebSocket using the Atmosphere Framework and Scala
Writing highly scalable WebSocket using the Atmosphere Framework and ScalaWriting highly scalable WebSocket using the Atmosphere Framework and Scala
Writing highly scalable WebSocket using the Atmosphere Framework and Scalajfarcand
 
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 serversTatsuhiko Miyagawa
 

What's hot (20)

Why we choose Symfony2
Why we choose Symfony2Why we choose Symfony2
Why we choose Symfony2
 
Building a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQueryBuilding a desktop app with HTTP::Engine, SQLite and jQuery
Building a desktop app with HTTP::Engine, SQLite and jQuery
 
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
 
Ruby C10K: High Performance Networking - RubyKaigi '09
Ruby C10K: High Performance Networking - RubyKaigi '09Ruby C10K: High Performance Networking - RubyKaigi '09
Ruby C10K: High Performance Networking - RubyKaigi '09
 
Communication in Python and the C10k problem
Communication in Python and the C10k problemCommunication in Python and the C10k problem
Communication in Python and the C10k problem
 
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
 
WebSockets with Spring 4
WebSockets with Spring 4WebSockets with Spring 4
WebSockets with Spring 4
 
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
 
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse ProxyApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
ApacheConNA 2015: Apache httpd 2.4 Reverse Proxy
 
Websockets on the JVM: Atmosphere to the rescue!
Websockets on the JVM: Atmosphere to the rescue!Websockets on the JVM: Atmosphere to the rescue!
Websockets on the JVM: Atmosphere to the rescue!
 
Jabber is more than instant messaging
Jabber is more than instant messagingJabber is more than instant messaging
Jabber is more than instant messaging
 
Building WebSocket and Server Side Events Applications using Atmosphere
Building WebSocket and Server Side Events Applications using AtmosphereBuilding WebSocket and Server Side Events Applications using Atmosphere
Building WebSocket and Server Side Events Applications using Atmosphere
 
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
 
0-60 with Goliath: Building High Performance Ruby Web-Services
0-60 with Goliath: Building High Performance Ruby Web-Services0-60 with Goliath: Building High Performance Ruby Web-Services
0-60 with Goliath: Building High Performance Ruby Web-Services
 
Real-time Ruby for the Real-time Web
Real-time Ruby for the Real-time WebReal-time Ruby for the Real-time Web
Real-time Ruby for the Real-time Web
 
2 Asp Dot Net Ajax Extensions
2 Asp Dot Net Ajax Extensions2 Asp Dot Net Ajax Extensions
2 Asp Dot Net Ajax Extensions
 
Reverse ajax in 2014
Reverse ajax in 2014Reverse ajax in 2014
Reverse ajax in 2014
 
The Atmosphere Framework
The Atmosphere FrameworkThe Atmosphere Framework
The Atmosphere Framework
 
Writing highly scalable WebSocket using the Atmosphere Framework and Scala
Writing highly scalable WebSocket using the Atmosphere Framework and ScalaWriting highly scalable WebSocket using the Atmosphere Framework and Scala
Writing highly scalable WebSocket using the Atmosphere Framework and Scala
 
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
 

Similar to A few words about WAMP

Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...Atlassian
 
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...Atlassian
 
Hacking Client Side Insecurities
Hacking Client Side InsecuritiesHacking Client Side Insecurities
Hacking Client Side Insecuritiesamiable_indian
 
WSO2Con USA 2014 - Identity Server Tutorial
WSO2Con USA 2014 - Identity Server TutorialWSO2Con USA 2014 - Identity Server Tutorial
WSO2Con USA 2014 - Identity Server TutorialPrabath Siriwardena
 
Recipes for a successful production cloudfoundry deployment - CF Summit 2014
Recipes for a successful production cloudfoundry deployment - CF Summit 2014Recipes for a successful production cloudfoundry deployment - CF Summit 2014
Recipes for a successful production cloudfoundry deployment - CF Summit 2014Vinícius Carvalho
 
Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...
Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...
Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...VMware Tanzu
 
Realtime Content Delivery: Powering dynamic instant experiences
Realtime Content Delivery: Powering dynamic instant experiencesRealtime Content Delivery: Powering dynamic instant experiences
Realtime Content Delivery: Powering dynamic instant experiencesAkhilesh Gupta
 
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCF
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCFMigrate a on-prem platform to the public cloud with Java - SpringBoot and PCF
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCFRoy Braam
 
Understanding Identity in the World of Web APIs – Ronnie Mitra, API Architec...
Understanding Identity in the World of Web APIs – Ronnie Mitra,  API Architec...Understanding Identity in the World of Web APIs – Ronnie Mitra,  API Architec...
Understanding Identity in the World of Web APIs – Ronnie Mitra, API Architec...CA API Management
 
How did you know this ad would be relevant for me?
How did you know this ad would be relevant for me?How did you know this ad would be relevant for me?
How did you know this ad would be relevant for me?DataWorks Summit
 
Protecting Multi-Interfaced Mobile Web Services using Agreements
Protecting Multi-Interfaced Mobile Web Services using Agreements Protecting Multi-Interfaced Mobile Web Services using Agreements
Protecting Multi-Interfaced Mobile Web Services using Agreements Dr. Fahad Aijaz
 
Wikipedia’s Event Data Platform, Or: JSON Is Okay Too With Andrew Otto | Curr...
Wikipedia’s Event Data Platform, Or: JSON Is Okay Too With Andrew Otto | Curr...Wikipedia’s Event Data Platform, Or: JSON Is Okay Too With Andrew Otto | Curr...
Wikipedia’s Event Data Platform, Or: JSON Is Okay Too With Andrew Otto | Curr...HostedbyConfluent
 
Why your next serverless project should use AWS AppSync
Why your next serverless project should use AWS AppSyncWhy your next serverless project should use AWS AppSync
Why your next serverless project should use AWS AppSyncYan Cui
 
The waf book intro v1.0 lior rotkovitch
The waf book intro v1.0 lior rotkovitchThe waf book intro v1.0 lior rotkovitch
The waf book intro v1.0 lior rotkovitchLior Rotkovitch
 
API World 2013 - Transforming the Netflix API
API World 2013 - Transforming the Netflix APIAPI World 2013 - Transforming the Netflix API
API World 2013 - Transforming the Netflix APIBenjamin Schmaus
 
Broker: adventure through architecture pattern
Broker: adventure through architecture patternBroker: adventure through architecture pattern
Broker: adventure through architecture patternPivorak MeetUp
 
Testing in the 21st Century (ExpoQA)
Testing in the 21st Century (ExpoQA)Testing in the 21st Century (ExpoQA)
Testing in the 21st Century (ExpoQA)Alex Soto
 
Techdays Helsinki - Creating the distributed apps of the future using dapr - ...
Techdays Helsinki - Creating the distributed apps of the future using dapr - ...Techdays Helsinki - Creating the distributed apps of the future using dapr - ...
Techdays Helsinki - Creating the distributed apps of the future using dapr - ...Geert van der Cruijsen
 
Salesforce integration options
Salesforce integration optionsSalesforce integration options
Salesforce integration optionsTechforce Services
 

Similar to A few words about WAMP (20)

Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
 
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
Extend Your Use of JIRA by Solving Your Unique Concerns: An Exposé of the New...
 
Hacking Client Side Insecurities
Hacking Client Side InsecuritiesHacking Client Side Insecurities
Hacking Client Side Insecurities
 
WSO2Con USA 2014 - Identity Server Tutorial
WSO2Con USA 2014 - Identity Server TutorialWSO2Con USA 2014 - Identity Server Tutorial
WSO2Con USA 2014 - Identity Server Tutorial
 
Recipes for a successful production cloudfoundry deployment - CF Summit 2014
Recipes for a successful production cloudfoundry deployment - CF Summit 2014Recipes for a successful production cloudfoundry deployment - CF Summit 2014
Recipes for a successful production cloudfoundry deployment - CF Summit 2014
 
Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...
Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...
Cloud Foundry Cookbook: Recipes for a Successful Cloud Foundry Deployment in ...
 
Realtime Content Delivery: Powering dynamic instant experiences
Realtime Content Delivery: Powering dynamic instant experiencesRealtime Content Delivery: Powering dynamic instant experiences
Realtime Content Delivery: Powering dynamic instant experiences
 
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCF
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCFMigrate a on-prem platform to the public cloud with Java - SpringBoot and PCF
Migrate a on-prem platform to the public cloud with Java - SpringBoot and PCF
 
Understanding Identity in the World of Web APIs – Ronnie Mitra, API Architec...
Understanding Identity in the World of Web APIs – Ronnie Mitra,  API Architec...Understanding Identity in the World of Web APIs – Ronnie Mitra,  API Architec...
Understanding Identity in the World of Web APIs – Ronnie Mitra, API Architec...
 
How did you know this ad would be relevant for me?
How did you know this ad would be relevant for me?How did you know this ad would be relevant for me?
How did you know this ad would be relevant for me?
 
Protecting Multi-Interfaced Mobile Web Services using Agreements
Protecting Multi-Interfaced Mobile Web Services using Agreements Protecting Multi-Interfaced Mobile Web Services using Agreements
Protecting Multi-Interfaced Mobile Web Services using Agreements
 
Wikipedia’s Event Data Platform, Or: JSON Is Okay Too With Andrew Otto | Curr...
Wikipedia’s Event Data Platform, Or: JSON Is Okay Too With Andrew Otto | Curr...Wikipedia’s Event Data Platform, Or: JSON Is Okay Too With Andrew Otto | Curr...
Wikipedia’s Event Data Platform, Or: JSON Is Okay Too With Andrew Otto | Curr...
 
Why your next serverless project should use AWS AppSync
Why your next serverless project should use AWS AppSyncWhy your next serverless project should use AWS AppSync
Why your next serverless project should use AWS AppSync
 
The waf book intro v1.0 lior rotkovitch
The waf book intro v1.0 lior rotkovitchThe waf book intro v1.0 lior rotkovitch
The waf book intro v1.0 lior rotkovitch
 
API World 2013 - Transforming the Netflix API
API World 2013 - Transforming the Netflix APIAPI World 2013 - Transforming the Netflix API
API World 2013 - Transforming the Netflix API
 
Broker: adventure through architecture pattern
Broker: adventure through architecture patternBroker: adventure through architecture pattern
Broker: adventure through architecture pattern
 
Testing in the 21st Century (ExpoQA)
Testing in the 21st Century (ExpoQA)Testing in the 21st Century (ExpoQA)
Testing in the 21st Century (ExpoQA)
 
SOA patterns
SOA patterns SOA patterns
SOA patterns
 
Techdays Helsinki - Creating the distributed apps of the future using dapr - ...
Techdays Helsinki - Creating the distributed apps of the future using dapr - ...Techdays Helsinki - Creating the distributed apps of the future using dapr - ...
Techdays Helsinki - Creating the distributed apps of the future using dapr - ...
 
Salesforce integration options
Salesforce integration optionsSalesforce integration options
Salesforce integration options
 

Recently uploaded

SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESmohitsingh558521
 
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
 
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
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii SoldatenkoFwdays
 
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
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
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
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc
 
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
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupFlorian Wilhelm
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .Alan Dix
 
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
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxNavinnSomaal
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationSlibray Presentation
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteDianaGray10
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxLoriGlavin3
 

Recently uploaded (20)

SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICESSALESFORCE EDUCATION CLOUD | FEXLE SERVICES
SALESFORCE EDUCATION CLOUD | FEXLE SERVICES
 
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
 
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?
 
"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko"Debugging python applications inside k8s environment", Andrii Soldatenko
"Debugging python applications inside k8s environment", Andrii Soldatenko
 
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
 
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
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
 
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data PrivacyTrustArc Webinar - How to Build Consumer Trust Through Data Privacy
TrustArc Webinar - How to Build Consumer Trust Through Data Privacy
 
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
 
Streamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project SetupStreamlining Python Development: A Guide to a Modern Project Setup
Streamlining Python Development: A Guide to a Modern Project Setup
 
From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .From Family Reminiscence to Scholarly Archive .
From Family Reminiscence to Scholarly Archive .
 
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
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
SAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptxSAP Build Work Zone - Overview L2-L3.pptx
SAP Build Work Zone - Overview L2-L3.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Connect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck PresentationConnect Wave/ connectwave Pitch Deck Presentation
Connect Wave/ connectwave Pitch Deck Presentation
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Take control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test SuiteTake control of your SAP testing with UiPath Test Suite
Take control of your SAP testing with UiPath Test Suite
 
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptxPasskey Providers and Enabling Portability: FIDO Paris Seminar.pptx
Passkey Providers and Enabling Portability: FIDO Paris Seminar.pptx
 

A few words about WAMP

  • 1. A few words about MoscowJS, july 2014 Konstantin Burkalev, @KSDaemon
  • 2. WAMP ≠ Windows, Apache, MySQL, PHP
  • 3. WAMP = Application level protocol, " implementing 2 patterns: • Publish/Subscribe (PubSub)" • Remote Procedure Calls (RPC)
  • 4. Basic components and definitions • Resource identifier • Transport • Serializer • Session • Realm - domain, namespace • Peer • Client • Router • Role
  • 6. Resource identifiers Required for: • Subscriptions • Procedures • Errors are URI-based • system.send.file • chat.message • users.admins.message • user.profile.updated
  • 7. Serialization and data types Supported serializers: • JSON • MsgPack Supported data types: Required: Additional: • integer • string • bool • list (array) • dict any, depends on serializer
  • 8. Messages and payload • [HELLO, Realm|uri, Details|dict] " • [PUBLISH, Request|id, Options|dict, Topic|uri] • [PUBLISH, Request|id, Options|dict, Topic|uri, Arguments|list] • [PUBLISH, Request|id, Options|dict, Topic|uri, Arguments|list, ArgumentsKw|dict] " • [CALL, Request|id, Options|dict, Procedure|uri] • [CALL, Request|id, Options|dict, Procedure|uri, Arguments|list] • [CALL, Request|id, Options|dict, Procedure|uri, Arguments|list, ArgumentsKw|dict] " • [RESULT, CALL.Request|id, Details|dict] • [RESULT, CALL.Request|id, Details|dict, YIELD.Arguments|list] • [RESULT, CALL.Request|id, Details|dict, YIELD.Arguments|list, YIELD.ArgumentsKw|dict] Payload may be supplied as: • Array | List • Hash-table | Dictionary
  • 9. Transport • Based on messages • Messages are ordered • Bidirectional message flow • Websocket • Raw TCP • HTTP long-polling (under dev) • Unix sockets
  • 10. Transport and Session Client Router
  • 11. Transport and Session Client Router HELLO
  • 12. Transport and Session Client Router HELLO WELCOME
  • 13. Transport and Session Client Router HELLO WELCOME ABORT
  • 14. Transport and Session Client Router HELLO WELCOME ABORT GOODBYE
  • 15. Transport and Session Client Router HELLO WELCOME ABORT GOODBYE GOODBYE
  • 16. Transport and Session Client Router HELLO WELCOME ABORT GOODBYE GOODBYE GOODBYE
  • 17. Transport and Session Client Router HELLO WELCOME ABORT GOODBYE GOODBYE GOODBYE GOODBYE
  • 18. Publish / Subscribe Publisher Broker Subscriber
  • 19. Publish / Subscribe Publisher Broker Subscriber SUBSCRIBE
  • 20. Publish / Subscribe Publisher Broker Subscriber SUBSCRIBE SUBSCRIBED
  • 21. Publish / Subscribe Publisher Broker Subscriber SUBSCRIBE SUBSCRIBED ERROR
  • 22. Publish / Subscribe Publisher Broker Subscriber SUBSCRIBE SUBSCRIBED ERROR PUBLISH
  • 23. Publish / Subscribe Publisher Broker Subscriber SUBSCRIBE SUBSCRIBED ERROR PUBLISH PUBLISHED
  • 24. Publish / Subscribe Publisher Broker Subscriber SUBSCRIBE SUBSCRIBED ERROR PUBLISH PUBLISHED ERROR
  • 25. Publish / Subscribe Publisher Broker Subscriber SUBSCRIBE SUBSCRIBED ERROR PUBLISH PUBLISHED ERROR EVENT
  • 26. Publish / Subscribe Publisher Broker Subscriber SUBSCRIBE SUBSCRIBED ERROR UNSUBSCRIBE PUBLISH PUBLISHED ERROR EVENT
  • 27. Publish / Subscribe Publisher Broker Subscriber SUBSCRIBE SUBSCRIBED ERROR UNSUBSCRIBE UNSUBSCRIBED PUBLISH PUBLISHED ERROR EVENT
  • 28. Publish / Subscribe Publisher Broker Subscriber SUBSCRIBE SUBSCRIBED ERROR UNSUBSCRIBE UNSUBSCRIBED ERROR PUBLISH PUBLISHED ERROR EVENT
  • 29. Remote Procedure Calls Caller Dealer Callee
  • 30. Remote Procedure Calls Caller Dealer Callee REGISTER
  • 31. Remote Procedure Calls Caller Dealer Callee REGISTER REGISTERED
  • 32. Remote Procedure Calls Caller Dealer Callee REGISTER REGISTERED ERROR
  • 33. Remote Procedure Calls Caller Dealer Callee REGISTER REGISTERED ERROR CALL
  • 34. Remote Procedure Calls Caller Dealer Callee REGISTER REGISTERED ERROR CALL INVOCATION
  • 35. Remote Procedure Calls Caller Dealer Callee REGISTER REGISTERED ERROR CALL INVOCATION YIELD
  • 36. Remote Procedure Calls Caller Dealer Callee REGISTER REGISTERED ERROR CALL INVOCATION YIELD ERROR
  • 37. Remote Procedure Calls Caller Dealer Callee REGISTER REGISTERED ERROR CALL RESULT INVOCATION YIELD ERROR
  • 38. Remote Procedure Calls Caller Dealer Callee REGISTER REGISTERED ERROR CALL RESULT INVOCATION YIELD ERROR ERROR
  • 39. Remote Procedure Calls Caller Dealer Callee REGISTER REGISTERED ERROR UNREGISTER CALL RESULT INVOCATION YIELD ERROR ERROR
  • 40. Remote Procedure Calls Caller Dealer Callee REGISTER REGISTERED ERROR UNREGISTER UNREGISTERED CALL RESULT INVOCATION YIELD ERROR ERROR
  • 41. Remote Procedure Calls Caller Dealer Callee REGISTER REGISTERED ERROR UNREGISTER UNREGISTERED ERROR CALL RESULT INVOCATION YIELD ERROR ERROR
  • 42. Profiles Set of features within each pattern (PubSub, RPC) • Basic profile • Advanced profile
  • 43. Advanced profile • Session Management • Authentication • Heartbeat
  • 44. Advanced profile • Publish / Subscribe • Black/white lists • Publisher identification • Pattern-based subscriptions • Meta events • Subscriber list • Events list
  • 45. Advanced profile • Remote Procedure Calls • black/white lists • Caller identification • Pattern-based RPC registration • Canceling calls • Progressive calls
  • 46. Usage example Online consultant Browser Embedded app client Browser Embedded app client Browser Backoffice app client Browser Backoffice app client WAMP Router (realm 1) Browser Embedded app client Browser Embedded app client WAMP Router (realm 2)
  • 47. Usage example Online consultant Browser Embedded app client Browser Embedded app client Browser Backoffice app client Browser Backoffice app client WAMP Router (realm 1) Browser Embedded app client Browser Embedded app client subscribe to ‘ready.for.chat’ subscribe to ‘ready.for.chat’ WAMP Router (realm 2)
  • 48. Usage example Online consultant Browser Embedded app client Browser Embedded app client Browser Backoffice app client Browser Backoffice app client WAMP Router (realm 1) Browser Embedded app client Browser Embedded app client WAMP Router (realm 2) subscribe to ‘chat.taken’ subscribe to ‘chat.taken’
  • 49. Usage example Online consultant Browser Embedded app client Browser Embedded app client Browser Backoffice app client Browser Backoffice app client WAMP Router (realm 1) Browser Embedded app client Browser Embedded app client subscribe to ‘user.chat.id1235’ WAMP Router (realm 2)
  • 50. Usage example Online consultant Browser Embedded app client Browser Embedded app client Browser Backoffice app client Browser Backoffice app client WAMP Router (realm 1) Browser Embedded app client Browser Embedded app client publish event to ‘ready.for.chat’ WAMP Router (realm 2)
  • 51. Usage example Online consultant Browser Embedded app client Browser Embedded app client Browser Backoffice app client Browser Backoffice app client WAMP Router (realm 1) Browser Embedded app client Browser Embedded app client receive event in ‘ready.for.chat’ receive event in ‘ready.for.chat’ WAMP Router (realm 2)
  • 52. Usage example Online consultant Browser Embedded app client Browser Embedded app client Browser Backoffice app client Browser Backoffice app client WAMP Router (realm 1) Browser Embedded app client Browser Embedded app client publish event to ‘chat.taken’ WAMP Router (realm 2)
  • 53. Usage example Online consultant Browser Embedded app client Browser Embedded app client Browser Backoffice app client Browser Backoffice app client WAMP Router (realm 1) Browser Embedded app client Browser Embedded app client receive event in ‘chat.taken’ WAMP Router (realm 2)
  • 54. Usage example Online consultant Browser Embedded app client Browser Embedded app client Browser Backoffice app client Browser Backoffice app client WAMP Router (realm 1) Browser Embedded app client Browser Embedded app client publish event to ‘user.chat.id1235’ WAMP Router (realm 2)
  • 55. Usage example Online consultant Browser Embedded app client Browser Embedded app client Browser Backoffice app client Browser Backoffice app client WAMP Router (realm 1) Browser Embedded app client Browser Embedded app client receive event in ‘user.chat.id1235’ WAMP Router (realm 2)
  • 56. Usage example Online consultant Browser Embedded app client Browser Embedded app client Browser Backoffice app client Browser Backoffice app client WAMP Router (realm 1) Browser Embedded app client Browser Embedded app client subscribe to ‘user.chat.id2425’ WAMP Router (realm 2)
  • 57. Usage example Online consultant Browser Embedded app client Browser Embedded app client Browser Backoffice app client Browser Backoffice app client WAMP Router (realm 1) Browser Embedded app client Browser Embedded app client publish event to ‘ready.for.chat’ WAMP Router (realm 2)
  • 58. Usage example Online consultant Browser Embedded app client Browser Embedded app client Browser Backoffice app client Browser Backoffice app client WAMP Router (realm 1) Browser Embedded app client Browser Embedded app client receive event in ‘ready.for.chat’ receive event in ‘ready.for.chat’ WAMP Router (realm 2)
  • 59. Usage example Online consultant Browser Embedded app client Browser Embedded app client Browser Backoffice app client Browser Backoffice app client WAMP Router (realm 1) Browser Embedded app client Browser Embedded app client publish event to ‘chat.taken’ WAMP Router (realm 2)
  • 60. Usage example Online consultant Browser Embedded app client Browser Embedded app client Browser Backoffice app client Browser Backoffice app client WAMP Router (realm 1) Browser Embedded app client Browser Embedded app client receive event in ‘chat.taken’ WAMP Router (realm 2)
  • 61. Usage example Online consultant Browser Embedded app client Browser Embedded app client Browser Backoffice app client Browser Backoffice app client WAMP Router (realm 1) Browser Embedded app client Browser Embedded app client publish event to ‘user.chat.id2425’ WAMP Router (realm 2)
  • 62. Usage example Online consultant Browser Embedded app client Browser Embedded app client Browser Backoffice app client Browser Backoffice app client WAMP Router (realm 1) Browser Embedded app client Browser Embedded app client receive event in ‘user.chat.id2425’ WAMP Router (realm 2)
  • 63. Usage example Online consultant Browser Embedded app client Browser Embedded app client Browser Backoffice app client Browser Backoffice app client WAMP Router (realm 1) Browser Embedded app client Browser Embedded app client WAMP Router (realm 2)
  • 64. Usage example Browser Browser Integration solution Server side infrastructure WAMP Router Mobile Desktop SUBSCRIBE to TOPICs REGISTER RPC REGISTER RPC REGISTER RPC SUBSCRIBE to TOPICs Internal service 1 Internal service 2 Internal service 3 Frontoffice app client Frontoffice app client CRUD Nginx / HAProxy CRUD CRUD Backoffice app client SUBSCRIBE to TOPICs PUBLISH Event PUBLISH Event CALL RPCs Nginx / HAProxy Backoffice app client DB CRUD CRUD Backoffice app serverside Frontoffice app serverside
  • 65. Usage example WAMP as a platform for SOA solutions Consumer 1 Consumer 2 Consumer 3 Consumer 4 Consumer 5 Provides RPC Call RPC Publish events Subscribe to topics Call RPC Provides RPC Publish events Service Provider 1 Service Provider 2 Service Provider 3 Service Provider 4 Service Provider 5 Publish events WAMP Router (realm 1, realm 2, realm 3, ....) Subscribe to topics Publish events
  • 66. Usage example WAMP as a platform for SOA solutions • Unified service bus • Asynchronous procedures execution • Standardization of interaction interfaces • Minimal overhead • Flexible infrastructure • Isolation and loose coupling of services • Easy to connect new services
  • 67. Implementations • JavaScript! • Autobahn|JS (browser, node.js) • Wampy.js (browser) • Java! • Autobahn|Android (soon) • .NET! • WampSharp (under dev) • PHP! • Thurway Clients • Python! • Autobahn|Python • C++! • Autobahn|Cpp • Erlang! • Erwa • Objective-C! • MDWamp • Lua (under dev) Routers • Python! • Autobahn|Python • Crossbar.io • Erlang! • Erwa • PHP! • Thurway • Lua! • Wiola
  • 68. Conclusion • Simple and open protocol • RPC + PubSub out of the box • Unified routing • Transport and serialization for every taste • Minimal overhead • Native use in web applications • Allows you to build distributed applications with loosely coupled components • Many implementations in different languages • Open source & community
  • 69. Useful links • http://wamp.ws! • Description • Specification • Implementations • https://groups.google.com/group/wampws • http://autobahn.ws • https://github.com/crossbario/crossbar/wiki • Crossbar.io • Client examples in different languages
  • 70. That’s all folks!" Any questions ?
  • 71. Konstantin Burkalev Thank you! • Mail: kostik@ksdaemon.ru • Twitter: @KSDaemon • GitHub: KSDaemon • Blog: blog.ksdaemon.ru