SlideShare uma empresa Scribd logo
1 de 71
Baixar para ler 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

Mais conteúdo relacionado

Mais procurados

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
 

Mais procurados (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
 

Semelhante a 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
 

Semelhante a 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
 

Último

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
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Alkin Tezuysal
 
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
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityIES VE
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: 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
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterMydbops
 
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
 
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
 
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
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationKnoldus Inc.
 
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
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...AliaaTarek5
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfMounikaPolabathina
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...panagenda
 
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
 
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
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demoHarshalMandlekar2
 
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
 

Último (20)

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
 
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
Unleashing Real-time Insights with ClickHouse_ Navigating the Landscape in 20...
 
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
 
Decarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a realityDecarbonising Buildings: Making a net-zero built environment a reality
Decarbonising Buildings: Making a net-zero built environment a reality
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: 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
 
Scale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL RouterScale your database traffic with Read & Write split using MySQL Router
Scale your database traffic with Read & Write split using MySQL Router
 
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
 
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
 
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
 
Data governance with Unity Catalog Presentation
Data governance with Unity Catalog PresentationData governance with Unity Catalog Presentation
Data governance with Unity Catalog Presentation
 
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...
 
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
(How to Program) Paul Deitel, Harvey Deitel-Java How to Program, Early Object...
 
What is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdfWhat is DBT - The Ultimate Data Build Tool.pdf
What is DBT - The Ultimate Data Build Tool.pdf
 
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
Why device, WIFI, and ISP insights are crucial to supporting remote Microsoft...
 
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
 
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
 
Sample pptx for embedding into website for demo
Sample pptx for embedding into website for demoSample pptx for embedding into website for demo
Sample pptx for embedding into website for demo
 
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