SlideShare ist ein Scribd-Unternehmen logo
1 von 25
Build the realtime web with XMPP and
Wave
Collaborating in realtime on the web

2010-03-26 - Erlang Factory
Mickaël Rémond <mremond@process-one.net>
Building the real time web: Initial
problem
Realtime web: A natural trend of the web
                                                  Web 3.0 or Web! : real-
                                                  time platform for data &
                                                           events


                              Web 2.0 : platform for
                                   persons



      Web 1.0 : platform for info
           & documents
Build with inadequate technologies
 Inadequate technologies have been used for that.
 HTTP is ubiquitous so it has been used as a basis.
 request and response paradigm, not adequate for push
    Push is the basis of realtime web:
        = distribution of event coming from the server or another client.
 AJAX has been invented to simulate push, but it is a hack on a technology
 which is not adequate.

 Most services that claim to be real time are not trully real time.
 Example Twitter:
    No push: polling based. A client need to send requests frequently to the
    server to check if there is new content.
    Event received are most of the time delayed.
HTTP limitations
 Request and response mechanism.
 AJAX work around add an overhead with lots of HTTP headers.
 Lack of addressing scheme: You cannot address a user: You cannot only
 send content back to an HTTP connection.
 Architecture simple but not very flexible:




                     Client               Server
XMPP: emerging solution for realtime
user interactions
Emerging protocol for realtime web: XMPP
 XMPP = eXtensible Messaging and Presence Protocol
     Protocol is formerly know as Jabber
     IETF standard
 Connected protocol relying on a session. It means you can send but also receive
 information seamlessly.
 Addressing scheme: Each user can be reached by a message from any point in the
 network with his unique ID: JID.
 Federated: It means you can send information across services and across users
 through servers.
 It supports realtime message distributions that can covers the full scope of need to build
 realtime web:
     Can optionally use HTTP as transport layer (Bosh).
     Can use sophisticated and flexible event distribution mecanism (pubsub).
     Can support all types of devices including mobile.
     Can support flexible architecture.
C2S
Client         Server
Client




Client   Server   Client




         Client
S2S
Server         Server
Server   Server




Server   Server
C   C



C   S   S   C



C   S   S   C



    C   C
Demonstrating the power of XMPP for real time
web
 Collecta: it is transforming Twitter and other social networking publication
 into true real time events.

 Chesspark: Play chess over XMPP in the browser.


 Wordpress: Distribute blog post in real time over XMPP.

 BBC: Live distribution of radio program in real time.


 OneWeb: Browser interaction tool. Control your browser and share bookmark
 in real time -> Demo.

 In all cases, the technology used is XMPP and pubsub. Oneweb also uses
 adhoc commands. Chesspark uses groupchat (multi user chat rooms).
Google Wave: emerging solution for
realtime user interactions
What is Wave ?
 A Wave is a real-time social web object.


 This « Webject » is a social element that can be dynamically shared & embedded with any web
 services like blogs, wikis, … in real time. Reply, archive, edit and add are available at any point in time
 in the process.


 Versioning: The playback function lets anyone rewind the Webject to see who waveleted, blipped what
 and when. all history is kept.


 A blended mix of Wave extensions : gadgets (run an app), robots (run smart-automated conversation
 participant), that could be accessed within Wave Inbox.


 Federation: There is no central server. You can use your own wave server, participate and invite
 people to wavelet on your server. Federation is based on XMPP.


 Open protocol: People are encouraged to implement their own client and server.
C   C



C   S   S   C



C   S   S   C



    C   C
Wave client by Google
Terminology
 Wave: a collection of wavelets

 Wavelet: a collection of named documents and participants, and the domain

 of operational transformation. Operational transformation is the mathematical

 model that allows merging concurrent changes.

 Blip: Conversational message

 Conversation model: «document format»
Wave                                Wave
How it works ?         Client                              Client




                     Wave front-end (Cient protocol: XMPP, HTTP, ...)




                                                            Wave Server
                                                             Operational
                 Wave Store                                transformation

                                                             Wave service




                         Connection to other wave services
The protocols used in Wave
 Low level wave Protocol – Protocol Buffer (protobuf)

 Federation Protocol      – XMPP

 Robot Protocol           – JSON

 Client-Server Protocol   – As defined by the GWT but can be XMPP as well.

 Gadget API               – OpenSocial

 Wave Embedded API        – Javascript
Difference with XMPP pubsub
 The two technologies looks similar:
    They are built to distribute events to several participant at the same time
    They are based on XMPP


 But they have major differences:
    The core of wave protocol is protobuf (binary) whereas pubsub is XMPP
    (XML).
    Wave is XMPP as one of the possible transport for client and only
    transport for federation.
    Pubsub is made to distribute events
    Wave is made to edit a common shared memory space. Distributed
    events is a side effect.

 Wave and XMPP complete each other because they have different goals.
What is still missing ?

 Wave is still a work in progress by the community.

 True client protocol
    Google Wave client use their own custom protocol (but XMPP can be
    used)
 Better integration with the XMPP protocol.
 More usage examples.
 Better ecosystem: Bots, Widget, Server and client.
ProcessOne Wave server
 Already implemented for running a wave service:
     Wave store
     Wave server (Operational transform)
     ejabberd XMPP server plugin to run Wave server
     Client protocol over XMPP
     Federation with servers like the fedone example implementation proposed
     by Google.
     Federation with Google Wave.


 Preliminary demo with TKabber XMPP client.
The end
Useful Links
 XMPP: xmpp.org

 Wave:
  wave.google.com
  www.waveprotocol.org

 ProcessOne: www.process-one.net

 OneWeb: http://tinyurl.com/p1-oneweb

Weitere ähnliche Inhalte

Was ist angesagt?

The Future of Messaging: RabbitMQ and AMQP
The Future of Messaging: RabbitMQ and AMQP The Future of Messaging: RabbitMQ and AMQP
The Future of Messaging: RabbitMQ and AMQP
Eberhard Wolff
 

Was ist angesagt? (20)

The RabbitMQ Message Broker
The RabbitMQ Message BrokerThe RabbitMQ Message Broker
The RabbitMQ Message Broker
 
Amqp Basic
Amqp BasicAmqp Basic
Amqp Basic
 
Messaging Standards and Systems - AMQP & RabbitMQ
Messaging Standards and Systems - AMQP & RabbitMQMessaging Standards and Systems - AMQP & RabbitMQ
Messaging Standards and Systems - AMQP & RabbitMQ
 
Reactive Java: Promises and Streams with Reakt (JavaOne talk 2016)
Reactive Java: Promises and Streams with Reakt  (JavaOne talk 2016)Reactive Java: Promises and Streams with Reakt  (JavaOne talk 2016)
Reactive Java: Promises and Streams with Reakt (JavaOne talk 2016)
 
Going Beyond UDP Acceleration - SLide Deck
Going Beyond UDP Acceleration - SLide DeckGoing Beyond UDP Acceleration - SLide Deck
Going Beyond UDP Acceleration - SLide Deck
 
Modern Distributed Messaging and RPC
Modern Distributed Messaging and RPCModern Distributed Messaging and RPC
Modern Distributed Messaging and RPC
 
Building scalable flexible messaging systems using qpid
Building scalable flexible messaging systems using qpidBuilding scalable flexible messaging systems using qpid
Building scalable flexible messaging systems using qpid
 
Architecture | The Future of Messaging: RabbitMQ and AMQP | Eberhard Wolff
Architecture | The Future of Messaging: RabbitMQ and AMQP | Eberhard WolffArchitecture | The Future of Messaging: RabbitMQ and AMQP | Eberhard Wolff
Architecture | The Future of Messaging: RabbitMQ and AMQP | Eberhard Wolff
 
Messaging Standards and Systems - AMQP & RabbitMQ
Messaging Standards and Systems - AMQP & RabbitMQMessaging Standards and Systems - AMQP & RabbitMQ
Messaging Standards and Systems - AMQP & RabbitMQ
 
AMQP with RabbitMQ
AMQP with RabbitMQAMQP with RabbitMQ
AMQP with RabbitMQ
 
RabbitMQ fairly-indepth
RabbitMQ fairly-indepthRabbitMQ fairly-indepth
RabbitMQ fairly-indepth
 
The Future of Messaging: RabbitMQ and AMQP
The Future of Messaging: RabbitMQ and AMQP The Future of Messaging: RabbitMQ and AMQP
The Future of Messaging: RabbitMQ and AMQP
 
Using Apache Pulsar as a Modern, Scalable, High Performing JMS Platform - Pus...
Using Apache Pulsar as a Modern, Scalable, High Performing JMS Platform - Pus...Using Apache Pulsar as a Modern, Scalable, High Performing JMS Platform - Pus...
Using Apache Pulsar as a Modern, Scalable, High Performing JMS Platform - Pus...
 
Messaging with RabbitMQ and AMQP
Messaging with RabbitMQ and AMQPMessaging with RabbitMQ and AMQP
Messaging with RabbitMQ and AMQP
 
High-Speed Reactive Microservices - trials and tribulations
High-Speed Reactive Microservices - trials and tribulationsHigh-Speed Reactive Microservices - trials and tribulations
High-Speed Reactive Microservices - trials and tribulations
 
A Closer Look at RabbitMQ
A Closer Look at RabbitMQA Closer Look at RabbitMQ
A Closer Look at RabbitMQ
 
Messaging in the Cloud - AMQP, RabbitMQ and Spring
Messaging in the Cloud - AMQP, RabbitMQ and SpringMessaging in the Cloud - AMQP, RabbitMQ and Spring
Messaging in the Cloud - AMQP, RabbitMQ and Spring
 
Message Queue (MQ) Testing
Message Queue (MQ) TestingMessage Queue (MQ) Testing
Message Queue (MQ) Testing
 
XMPP & AMQP in Ruby
XMPP & AMQP in RubyXMPP & AMQP in Ruby
XMPP & AMQP in Ruby
 
Message Broker System and RabbitMQ
Message Broker System and RabbitMQMessage Broker System and RabbitMQ
Message Broker System and RabbitMQ
 

Andere mochten auch

Andere mochten auch (20)

Multi Chat
Multi ChatMulti Chat
Multi Chat
 
2015: L'année d'Elixir, Code, écosystème et communauté
2015: L'année d'Elixir, Code, écosystème et communauté2015: L'année d'Elixir, Code, écosystème et communauté
2015: L'année d'Elixir, Code, écosystème et communauté
 
Create Your Own Language
Create Your Own LanguageCreate Your Own Language
Create Your Own Language
 
Archipel Introduction - ejabberd SF Meetup
Archipel Introduction - ejabberd SF MeetupArchipel Introduction - ejabberd SF Meetup
Archipel Introduction - ejabberd SF Meetup
 
OneTeam Media Server
OneTeam Media ServerOneTeam Media Server
OneTeam Media Server
 
WaveOne server and client by ProcessOne
WaveOne server and client by ProcessOneWaveOne server and client by ProcessOne
WaveOne server and client by ProcessOne
 
Nanomsg - Scalable Networking Library
Nanomsg - Scalable Networking LibraryNanomsg - Scalable Networking Library
Nanomsg - Scalable Networking Library
 
Event Driven Architecture Concepts in Web Technologies - Part 2
Event Driven Architecture Concepts in Web Technologies - Part 2Event Driven Architecture Concepts in Web Technologies - Part 2
Event Driven Architecture Concepts in Web Technologies - Part 2
 
ProcessOne Push Platform: XMPP-based Push Solutions
ProcessOne Push Platform: XMPP-based Push SolutionsProcessOne Push Platform: XMPP-based Push Solutions
ProcessOne Push Platform: XMPP-based Push Solutions
 
Erlang White Label
Erlang White LabelErlang White Label
Erlang White Label
 
Real life XMPP Instant Messaging
Real life XMPP Instant MessagingReal life XMPP Instant Messaging
Real life XMPP Instant Messaging
 
XMPP Academy #1
XMPP Academy #1XMPP Academy #1
XMPP Academy #1
 
Nodejs Applications in Production
Nodejs Applications in ProductionNodejs Applications in Production
Nodejs Applications in Production
 
Multitasking in iOS 7
Multitasking in iOS 7Multitasking in iOS 7
Multitasking in iOS 7
 
Event Driven Architecture Concepts in Web Technologies - Part 1
Event Driven Architecture Concepts in Web Technologies - Part 1Event Driven Architecture Concepts in Web Technologies - Part 1
Event Driven Architecture Concepts in Web Technologies - Part 1
 
Practical Look at Erlang
Practical Look at ErlangPractical Look at Erlang
Practical Look at Erlang
 
A vision for ejabberd - ejabberd SF Meetup
A vision for ejabberd - ejabberd SF MeetupA vision for ejabberd - ejabberd SF Meetup
A vision for ejabberd - ejabberd SF Meetup
 
Phoenix Presence: Le service temps réel de Phoenix - Paris.ex #8
Phoenix Presence: Le service temps réel de Phoenix - Paris.ex #8 Phoenix Presence: Le service temps réel de Phoenix - Paris.ex #8
Phoenix Presence: Le service temps réel de Phoenix - Paris.ex #8
 
The Real Time Web with XMPP
The Real Time Web with XMPPThe Real Time Web with XMPP
The Real Time Web with XMPP
 
What is XMPP Protocol
What is XMPP ProtocolWhat is XMPP Protocol
What is XMPP Protocol
 

Ähnlich wie Real time Web Application with XMPP and Wave

Language agnostic technologies introduced in pi web-agent 0.4rc2
Language agnostic technologies  introduced in pi web-agent 0.4rc2Language agnostic technologies  introduced in pi web-agent 0.4rc2
Language agnostic technologies introduced in pi web-agent 0.4rc2
Andreas Galazis
 
Collaboration and Grid Technologies
Collaboration and Grid TechnologiesCollaboration and Grid Technologies
Collaboration and Grid Technologies
Videoguy
 
David Wang's Presentation at Emerging Communication Conference & Awards 2009 ...
David Wang's Presentation at Emerging Communication Conference & Awards 2009 ...David Wang's Presentation at Emerging Communication Conference & Awards 2009 ...
David Wang's Presentation at Emerging Communication Conference & Awards 2009 ...
eCommConf
 
The Art of Message Queues - TEKX
The Art of Message Queues - TEKXThe Art of Message Queues - TEKX
The Art of Message Queues - TEKX
Mike Willbanks
 

Ähnlich wie Real time Web Application with XMPP and Wave (20)

X realtime xmp-ptut-pdf
X realtime xmp-ptut-pdfX realtime xmp-ptut-pdf
X realtime xmp-ptut-pdf
 
Behind the scenes of Real-Time Notifications
Behind the scenes of Real-Time NotificationsBehind the scenes of Real-Time Notifications
Behind the scenes of Real-Time Notifications
 
Language agnostic technologies introduced in pi web-agent 0.4rc2
Language agnostic technologies  introduced in pi web-agent 0.4rc2Language agnostic technologies  introduced in pi web-agent 0.4rc2
Language agnostic technologies introduced in pi web-agent 0.4rc2
 
Collaboration and Grid Technologies
Collaboration and Grid TechnologiesCollaboration and Grid Technologies
Collaboration and Grid Technologies
 
Web services Concepts
Web services ConceptsWeb services Concepts
Web services Concepts
 
Chat app case study - xmpp vs SIP
Chat app case study - xmpp vs SIPChat app case study - xmpp vs SIP
Chat app case study - xmpp vs SIP
 
David Wang's Presentation at Emerging Communication Conference & Awards 2009 ...
David Wang's Presentation at Emerging Communication Conference & Awards 2009 ...David Wang's Presentation at Emerging Communication Conference & Awards 2009 ...
David Wang's Presentation at Emerging Communication Conference & Awards 2009 ...
 
Web server
Web serverWeb server
Web server
 
0130225347
01302253470130225347
0130225347
 
101 mistakes FINN.no has made with Kafka (Baksida meetup)
101 mistakes FINN.no has made with Kafka (Baksida meetup)101 mistakes FINN.no has made with Kafka (Baksida meetup)
101 mistakes FINN.no has made with Kafka (Baksida meetup)
 
Real time web apps
Real time web appsReal time web apps
Real time web apps
 
Signal R 2015
Signal R 2015Signal R 2015
Signal R 2015
 
IoT with SignalR & .NET Gadgeteer - NetMF@Work
IoT with SignalR & .NET Gadgeteer - NetMF@WorkIoT with SignalR & .NET Gadgeteer - NetMF@Work
IoT with SignalR & .NET Gadgeteer - NetMF@Work
 
Google Wave ppt
Google Wave pptGoogle Wave ppt
Google Wave ppt
 
Vert.x for Microservices Architecture
Vert.x for Microservices ArchitectureVert.x for Microservices Architecture
Vert.x for Microservices Architecture
 
WebRTC presentation
WebRTC presentationWebRTC presentation
WebRTC presentation
 
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time ApplicationsUnveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
Unveiling the Tech Salsa of LAMs with Janus in Real-Time Applications
 
Day in the life event-driven workshop
Day in the life  event-driven workshopDay in the life  event-driven workshop
Day in the life event-driven workshop
 
The Art of Message Queues - TEKX
The Art of Message Queues - TEKXThe Art of Message Queues - TEKX
The Art of Message Queues - TEKX
 
Real time web
Real time webReal time web
Real time web
 

Mehr von Mickaël Rémond

Mehr von Mickaël Rémond (11)

Go for Real Time Streaming Architectures - DotGo 2017
Go for Real Time Streaming Architectures - DotGo 2017Go for Real Time Streaming Architectures - DotGo 2017
Go for Real Time Streaming Architectures - DotGo 2017
 
Fighting XMPP abuse and spam with ejabberd - ejabberd Workshop #1
Fighting XMPP abuse and spam with ejabberd - ejabberd Workshop #1Fighting XMPP abuse and spam with ejabberd - ejabberd Workshop #1
Fighting XMPP abuse and spam with ejabberd - ejabberd Workshop #1
 
Managing ejabberd Platforms with Docker - ejabberd Workshop #1
Managing ejabberd Platforms with Docker - ejabberd Workshop #1Managing ejabberd Platforms with Docker - ejabberd Workshop #1
Managing ejabberd Platforms with Docker - ejabberd Workshop #1
 
Messaging temps réel avec Go
Messaging temps réel avec GoMessaging temps réel avec Go
Messaging temps réel avec Go
 
Building Scalable Systems: What you can learn from Erlang - DotScale 2016
Building Scalable Systems: What you can learn from Erlang - DotScale 2016Building Scalable Systems: What you can learn from Erlang - DotScale 2016
Building Scalable Systems: What you can learn from Erlang - DotScale 2016
 
Property-based testing of XMPP: generate your tests automatically - ejabberd ...
Property-based testing of XMPP: generate your tests automatically - ejabberd ...Property-based testing of XMPP: generate your tests automatically - ejabberd ...
Property-based testing of XMPP: generate your tests automatically - ejabberd ...
 
IoT Studio #1: Protocols introduction and connected jukebox
IoT Studio #1: Protocols introduction and connected jukeboxIoT Studio #1: Protocols introduction and connected jukebox
IoT Studio #1: Protocols introduction and connected jukebox
 
Deep Dive Into ejabberd Pubsub Implementation
Deep Dive Into ejabberd Pubsub ImplementationDeep Dive Into ejabberd Pubsub Implementation
Deep Dive Into ejabberd Pubsub Implementation
 
XMPP Academy #3
XMPP Academy #3XMPP Academy #3
XMPP Academy #3
 
XMPP Academy #2
XMPP Academy #2XMPP Academy #2
XMPP Academy #2
 
OneTeam Media Server
OneTeam Media ServerOneTeam Media Server
OneTeam Media Server
 

Kürzlich hochgeladen

+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
?#DUbAI#??##{{(☎️+971_581248768%)**%*]'#abortion pills for sale in dubai@
 

Kürzlich hochgeladen (20)

AWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of TerraformAWS Community Day CPH - Three problems of Terraform
AWS Community Day CPH - Three problems of Terraform
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
GenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day PresentationGenCyber Cyber Security Day Presentation
GenCyber Cyber Security Day Presentation
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Automating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps ScriptAutomating Google Workspace (GWS) & more with Apps Script
Automating Google Workspace (GWS) & more with Apps Script
 
Boost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivityBoost PC performance: How more available memory can improve productivity
Boost PC performance: How more available memory can improve productivity
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Tech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdfTech Trends Report 2024 Future Today Institute.pdf
Tech Trends Report 2024 Future Today Institute.pdf
 
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
+971581248768>> SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHA...
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Developing An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of BrazilDeveloping An App To Navigate The Roads of Brazil
Developing An App To Navigate The Roads of Brazil
 
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
04-2024-HHUG-Sales-and-Marketing-Alignment.pptx
 
Advantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your BusinessAdvantages of Hiring UIUX Design Service Providers for Your Business
Advantages of Hiring UIUX Design Service Providers for Your Business
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024Finology Group – Insurtech Innovation Award 2024
Finology Group – Insurtech Innovation Award 2024
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024Tata AIG General Insurance Company - Insurer Innovation Award 2024
Tata AIG General Insurance Company - Insurer Innovation Award 2024
 

Real time Web Application with XMPP and Wave

  • 1. Build the realtime web with XMPP and Wave Collaborating in realtime on the web 2010-03-26 - Erlang Factory Mickaël Rémond <mremond@process-one.net>
  • 2. Building the real time web: Initial problem
  • 3. Realtime web: A natural trend of the web Web 3.0 or Web! : real- time platform for data & events Web 2.0 : platform for persons Web 1.0 : platform for info & documents
  • 4. Build with inadequate technologies Inadequate technologies have been used for that. HTTP is ubiquitous so it has been used as a basis. request and response paradigm, not adequate for push Push is the basis of realtime web: = distribution of event coming from the server or another client. AJAX has been invented to simulate push, but it is a hack on a technology which is not adequate. Most services that claim to be real time are not trully real time. Example Twitter: No push: polling based. A client need to send requests frequently to the server to check if there is new content. Event received are most of the time delayed.
  • 5. HTTP limitations Request and response mechanism. AJAX work around add an overhead with lots of HTTP headers. Lack of addressing scheme: You cannot address a user: You cannot only send content back to an HTTP connection. Architecture simple but not very flexible: Client Server
  • 6. XMPP: emerging solution for realtime user interactions
  • 7. Emerging protocol for realtime web: XMPP XMPP = eXtensible Messaging and Presence Protocol Protocol is formerly know as Jabber IETF standard Connected protocol relying on a session. It means you can send but also receive information seamlessly. Addressing scheme: Each user can be reached by a message from any point in the network with his unique ID: JID. Federated: It means you can send information across services and across users through servers. It supports realtime message distributions that can covers the full scope of need to build realtime web: Can optionally use HTTP as transport layer (Bosh). Can use sophisticated and flexible event distribution mecanism (pubsub). Can support all types of devices including mobile. Can support flexible architecture.
  • 8. C2S Client Server
  • 9. Client Client Server Client Client
  • 10. S2S Server Server
  • 11. Server Server Server Server
  • 12. C C C S S C C S S C C C
  • 13. Demonstrating the power of XMPP for real time web Collecta: it is transforming Twitter and other social networking publication into true real time events. Chesspark: Play chess over XMPP in the browser. Wordpress: Distribute blog post in real time over XMPP. BBC: Live distribution of radio program in real time. OneWeb: Browser interaction tool. Control your browser and share bookmark in real time -> Demo. In all cases, the technology used is XMPP and pubsub. Oneweb also uses adhoc commands. Chesspark uses groupchat (multi user chat rooms).
  • 14. Google Wave: emerging solution for realtime user interactions
  • 15. What is Wave ? A Wave is a real-time social web object. This « Webject » is a social element that can be dynamically shared & embedded with any web services like blogs, wikis, … in real time. Reply, archive, edit and add are available at any point in time in the process. Versioning: The playback function lets anyone rewind the Webject to see who waveleted, blipped what and when. all history is kept. A blended mix of Wave extensions : gadgets (run an app), robots (run smart-automated conversation participant), that could be accessed within Wave Inbox. Federation: There is no central server. You can use your own wave server, participate and invite people to wavelet on your server. Federation is based on XMPP. Open protocol: People are encouraged to implement their own client and server.
  • 16. C C C S S C C S S C C C
  • 17. Wave client by Google
  • 18. Terminology Wave: a collection of wavelets Wavelet: a collection of named documents and participants, and the domain of operational transformation. Operational transformation is the mathematical model that allows merging concurrent changes. Blip: Conversational message Conversation model: «document format»
  • 19. Wave Wave How it works ? Client Client Wave front-end (Cient protocol: XMPP, HTTP, ...) Wave Server Operational Wave Store transformation Wave service Connection to other wave services
  • 20. The protocols used in Wave Low level wave Protocol – Protocol Buffer (protobuf) Federation Protocol – XMPP Robot Protocol – JSON Client-Server Protocol – As defined by the GWT but can be XMPP as well. Gadget API – OpenSocial Wave Embedded API – Javascript
  • 21. Difference with XMPP pubsub The two technologies looks similar: They are built to distribute events to several participant at the same time They are based on XMPP But they have major differences: The core of wave protocol is protobuf (binary) whereas pubsub is XMPP (XML). Wave is XMPP as one of the possible transport for client and only transport for federation. Pubsub is made to distribute events Wave is made to edit a common shared memory space. Distributed events is a side effect. Wave and XMPP complete each other because they have different goals.
  • 22. What is still missing ? Wave is still a work in progress by the community. True client protocol Google Wave client use their own custom protocol (but XMPP can be used) Better integration with the XMPP protocol. More usage examples. Better ecosystem: Bots, Widget, Server and client.
  • 23. ProcessOne Wave server Already implemented for running a wave service: Wave store Wave server (Operational transform) ejabberd XMPP server plugin to run Wave server Client protocol over XMPP Federation with servers like the fedone example implementation proposed by Google. Federation with Google Wave. Preliminary demo with TKabber XMPP client.
  • 25. Useful Links XMPP: xmpp.org Wave: wave.google.com www.waveprotocol.org ProcessOne: www.process-one.net OneWeb: http://tinyurl.com/p1-oneweb

Hinweis der Redaktion