SlideShare ist ein Scribd-Unternehmen logo
1 von 71
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Was ist angesagt?

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
 

Was ist angesagt? (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
 

Ähnlich wie 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
 
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
 
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
 
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
 

Ähnlich wie 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
 
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 ...
 
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
 
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
 

Kürzlich hochgeladen

Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersRaghuram Pandurangan
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Farhan Tariq
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsSergiu Bodiu
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesThousandEyes
 
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
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxLoriGlavin3
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesThousandEyes
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfIngrid Airi González
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Mark Goldstein
 
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
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rick Flair
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Hiroshi SHIBATA
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxLoriGlavin3
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPathCommunity
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditSkynet Technologies
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfpanagenda
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity PlanDatabarracks
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsRavi Sanghani
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesKari Kakkonen
 

Kürzlich hochgeladen (20)

Generative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information DevelopersGenerative AI for Technical Writer or Information Developers
Generative AI for Technical Writer or Information Developers
 
Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...Genislab builds better products and faster go-to-market with Lean project man...
Genislab builds better products and faster go-to-market with Lean project man...
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
DevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platformsDevEX - reference for building teams, processes, and platforms
DevEX - reference for building teams, processes, and platforms
 
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyesAssure Ecommerce and Retail Operations Uptime with ThousandEyes
Assure Ecommerce and Retail Operations Uptime with ThousandEyes
 
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.
 
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptxA Deep Dive on Passkeys: FIDO Paris Seminar.pptx
A Deep Dive on Passkeys: FIDO Paris Seminar.pptx
 
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyesHow to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
How to Effectively Monitor SD-WAN and SASE Environments with ThousandEyes
 
Generative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdfGenerative Artificial Intelligence: How generative AI works.pdf
Generative Artificial Intelligence: How generative AI works.pdf
 
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
Arizona Broadband Policy Past, Present, and Future Presentation 3/25/24
 
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
 
Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...Rise of the Machines: Known As Drones...
Rise of the Machines: Known As Drones...
 
Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024Long journey of Ruby standard library at RubyConf AU 2024
Long journey of Ruby standard library at RubyConf AU 2024
 
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptxThe Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
The Fit for Passkeys for Employee and Consumer Sign-ins: FIDO Paris Seminar.pptx
 
UiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to HeroUiPath Community: Communication Mining from Zero to Hero
UiPath Community: Communication Mining from Zero to Hero
 
Manual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance AuditManual 508 Accessibility Compliance Audit
Manual 508 Accessibility Compliance Audit
 
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdfSo einfach geht modernes Roaming fuer Notes und Nomad.pdf
So einfach geht modernes Roaming fuer Notes und Nomad.pdf
 
How to write a Business Continuity Plan
How to write a Business Continuity PlanHow to write a Business Continuity Plan
How to write a Business Continuity Plan
 
Potential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and InsightsPotential of AI (Generative AI) in Business: Learnings and Insights
Potential of AI (Generative AI) in Business: Learnings and Insights
 
Testing tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examplesTesting tools and AI - ideas what to try with some tool examples
Testing tools and AI - ideas what to try with some tool examples
 

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