SlideShare ist ein Scribd-Unternehmen logo
1 von 19
Real-time, collaborative
applications
in Plone
J-C Brand
What are real-time web
        applications?

●
  Instant Messaging
●
  Voice and Video conferencing
●
  File transfer
●
  Feeds/Notifications
●
  Collaborative editing
Building blocks
●
    XMPP Server and connection manager
    –   E.g ejabberd
●
    Nginx/Apache
    –   Reverse proxy for connection manager
●
    Plone add-ons
    –   collective.xmpp.core
    –   collective.xmpp.collaboration
    –   collective.xmpp.chat
    –   collective.xmpp.pubsub
    –   <your product here>
How does XMPP work?
●
    eXtensible Messaging and Presence Protocol
●
    Universal Unique Identifier (JID)
    –   jcbrand@jabber.plone.org/sprint
●
    Data exchanged as XML “stanzas”
    –   Presence
    –   Message
    –   Info/Query (IQ)
●
    Roster and social graph
XMPP Stanzas
XMPP Stanzas
XMPP Stanzas
XMPP Stanzas
Strophe.js
●
    XMPP library for JavaScript
●
    Connects via BOSH to XMPP server
Strophe.js
●
    XMPP library for JavaScript
●
    Connects via BOSH to XMPP server
●
    Can add stanza handlers
Strophe.js
●
    XMPP library for JavaScript
●
    Connects via BOSH to XMPP server
●
    Can add stanza handlers
●
    Can build stanzas
Strophe.js
●
    XMPP library for JavaScript
●
    Connects via BOSH to XMPP server
●
    Can add stanza handlers
●
    Can build stanzas
●
    Plugins
    –   MUC, Roster, Pubsub, Data Forms etc.
Backbone.js
●
    Enables structured javascript
    –   Models
        ●
            Key/value binding
        ●
            Custom events
    –   Collections
    –   Views
        ●
            Declarative event handling
        ●
            Templates
    –   RESTful JSON interface for connecting with API
Backbone.js Examples
●
    Creating a model:




●
    Instantiating a model:
Backbone.js Examples
●
    Creating a view
Backbone.js Views
Real-time Plone
●
    Messaging
    –   Multi/Single user chat
    –   File sharing
●
    Collaboration
    –   Documents, Whiteboard, UML, Mindmaps
    –   Translations
    –   Pair programming (Plone IDE, Theme Editor)
●
    Continuous feedback
    –   System status messages
    –   User feeds
●
    Audio/Video Conferencing
Thanks for attending
                          J-C Brand

              web: http://opkode.com
                email: jc@opkode.com
                   twitter: @jcopkode
                        IRC: jcbrand
Image credits:
●
    Legomen looking for guinnes
    http://estiletesemcabo.tumblr.com/post/2190751969
●
    Stormtrooper on facebook
    http://www.flickr.com/photos/balakov/

●
    Legoman with innards
    http://www.facebook.com/pages/Jason-Freeny/34170123768

●
    Lego wizard
    http://en.bricker.ru/sets/5614/

Weitere ähnliche Inhalte

Was ist angesagt?

Javascript in Linux Desktop
Javascript in Linux DesktopJavascript in Linux Desktop
Javascript in Linux Desktop
Yuren Ju
 
Developing GNOME Apps in Javascript
Developing GNOME Apps in JavascriptDeveloping GNOME Apps in Javascript
Developing GNOME Apps in Javascript
Felipe Borges
 
Flow based programming an overview
Flow based programming   an overviewFlow based programming   an overview
Flow based programming an overview
Samuel Lampa
 
蔡学镛 Rebol漫谈
蔡学镛   Rebol漫谈蔡学镛   Rebol漫谈
蔡学镛 Rebol漫谈
d0nn9n
 

Was ist angesagt? (19)

AddisDev Meetup ii: Golang and Flow-based Programming
AddisDev Meetup ii: Golang and Flow-based ProgrammingAddisDev Meetup ii: Golang and Flow-based Programming
AddisDev Meetup ii: Golang and Flow-based Programming
 
Mono Repo
Mono RepoMono Repo
Mono Repo
 
Go Programming Language by Google
Go Programming Language by GoogleGo Programming Language by Google
Go Programming Language by Google
 
Whats new in Eclipse Oxygen!
Whats new in Eclipse Oxygen!Whats new in Eclipse Oxygen!
Whats new in Eclipse Oxygen!
 
Writing native Linux desktop apps with JavaScript
Writing native Linux desktop apps with JavaScriptWriting native Linux desktop apps with JavaScript
Writing native Linux desktop apps with JavaScript
 
Dev + DevOps для PHP розробника
Dev + DevOps для PHP розробникаDev + DevOps для PHP розробника
Dev + DevOps для PHP розробника
 
Javascript in Linux Desktop
Javascript in Linux DesktopJavascript in Linux Desktop
Javascript in Linux Desktop
 
Як РНР розробник пише код на Kotlin
Як РНР розробник пише код на KotlinЯк РНР розробник пише код на Kotlin
Як РНР розробник пише код на Kotlin
 
Decision making - for loop , nested loop ,if-else statements , switch in goph...
Decision making - for loop , nested loop ,if-else statements , switch in goph...Decision making - for loop , nested loop ,if-else statements , switch in goph...
Decision making - for loop , nested loop ,if-else statements , switch in goph...
 
Developing GNOME Apps in Javascript
Developing GNOME Apps in JavascriptDeveloping GNOME Apps in Javascript
Developing GNOME Apps in Javascript
 
SciPipe - A light-weight workflow library inspired by flow-based programming
SciPipe - A light-weight workflow library inspired by flow-based programmingSciPipe - A light-weight workflow library inspired by flow-based programming
SciPipe - A light-weight workflow library inspired by flow-based programming
 
Groovy Finesse
Groovy FinesseGroovy Finesse
Groovy Finesse
 
Golang
GolangGolang
Golang
 
PHP Files: An Introduction
PHP Files: An IntroductionPHP Files: An Introduction
PHP Files: An Introduction
 
Coroutines in Kotlin
Coroutines in KotlinCoroutines in Kotlin
Coroutines in Kotlin
 
Golang (Go Programming Language)
Golang (Go Programming Language)Golang (Go Programming Language)
Golang (Go Programming Language)
 
10 reasons to be excited about go
10 reasons to be excited about go10 reasons to be excited about go
10 reasons to be excited about go
 
Flow based programming an overview
Flow based programming   an overviewFlow based programming   an overview
Flow based programming an overview
 
蔡学镛 Rebol漫谈
蔡学镛   Rebol漫谈蔡学镛   Rebol漫谈
蔡学镛 Rebol漫谈
 

Andere mochten auch (8)

うちラボ!媒体資料#110324
うちラボ!媒体資料#110324うちラボ!媒体資料#110324
うちラボ!媒体資料#110324
 
Eolico. l'affare delle pale ferme che valgono milioni di euro
Eolico. l'affare delle pale ferme che valgono milioni di euroEolico. l'affare delle pale ferme che valgono milioni di euro
Eolico. l'affare delle pale ferme che valgono milioni di euro
 
Introduzione alla Sicurezza di Sistemi Nucleari del Prof. Giuseppe Quartieri
Introduzione alla Sicurezza di Sistemi Nucleari  del Prof. Giuseppe QuartieriIntroduzione alla Sicurezza di Sistemi Nucleari  del Prof. Giuseppe Quartieri
Introduzione alla Sicurezza di Sistemi Nucleari del Prof. Giuseppe Quartieri
 
Reference Binders
Reference BindersReference Binders
Reference Binders
 
Sexi勉強会0630
Sexi勉強会0630Sexi勉強会0630
Sexi勉強会0630
 
Pain mgtpdf
Pain mgtpdfPain mgtpdf
Pain mgtpdf
 
Restraints seclusion
Restraints seclusionRestraints seclusion
Restraints seclusion
 
Designing for Culture Change
Designing for Culture ChangeDesigning for Culture Change
Designing for Culture Change
 

Ähnlich wie Real-time, collaborative applications in Plone

Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)
Per Henrik Lausten
 

Ähnlich wie Real-time, collaborative applications in Plone (20)

"Building Modern PHP Applications" - Jackson Murtha, South Dakota Code Camp 2012
"Building Modern PHP Applications" - Jackson Murtha, South Dakota Code Camp 2012"Building Modern PHP Applications" - Jackson Murtha, South Dakota Code Camp 2012
"Building Modern PHP Applications" - Jackson Murtha, South Dakota Code Camp 2012
 
OpenMockup - Presentation apr/2016
OpenMockup - Presentation apr/2016OpenMockup - Presentation apr/2016
OpenMockup - Presentation apr/2016
 
Node.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scaleNode.js Web Apps @ ebay scale
Node.js Web Apps @ ebay scale
 
Django, What is it, Why is it cool?
Django, What is it, Why is it cool?Django, What is it, Why is it cool?
Django, What is it, Why is it cool?
 
Build Great Networked APIs with Swift, OpenAPI, and gRPC
Build Great Networked APIs with Swift, OpenAPI, and gRPCBuild Great Networked APIs with Swift, OpenAPI, and gRPC
Build Great Networked APIs with Swift, OpenAPI, and gRPC
 
Workshop Intro: FrontEnd General Overview
Workshop Intro: FrontEnd General OverviewWorkshop Intro: FrontEnd General Overview
Workshop Intro: FrontEnd General Overview
 
RIA Platform Comparison
RIA Platform ComparisonRIA Platform Comparison
RIA Platform Comparison
 
Apache Flex and the imperfect Web
Apache Flex and the imperfect WebApache Flex and the imperfect Web
Apache Flex and the imperfect Web
 
Portable batch and streaming pipelines with Apache Beam (Big Data Application...
Portable batch and streaming pipelines with Apache Beam (Big Data Application...Portable batch and streaming pipelines with Apache Beam (Big Data Application...
Portable batch and streaming pipelines with Apache Beam (Big Data Application...
 
Venkata
VenkataVenkata
Venkata
 
Node.js scaling in highload
Node.js scaling in highloadNode.js scaling in highload
Node.js scaling in highload
 
Use React tools for better Angular apps
Use React tools for better Angular appsUse React tools for better Angular apps
Use React tools for better Angular apps
 
Configuring in the Browser, Really!
Configuring in the Browser, Really!Configuring in the Browser, Really!
Configuring in the Browser, Really!
 
Open Source Flash 2010
Open Source Flash 2010Open Source Flash 2010
Open Source Flash 2010
 
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
 
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
Daniele Esposti - Evolution or stagnation programming languages - Codemotion ...
 
LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :) LAMP is so yesterday, MEAN is so tomorrow! :)
LAMP is so yesterday, MEAN is so tomorrow! :)
 
Evolution or stagnation programming languages
Evolution or stagnation programming languagesEvolution or stagnation programming languages
Evolution or stagnation programming languages
 
React - The JavaScript Library for User Interfaces
React - The JavaScript Library for User InterfacesReact - The JavaScript Library for User Interfaces
React - The JavaScript Library for User Interfaces
 
Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)Intro to XPages for Administrators (DanNotes, November 28, 2012)
Intro to XPages for Administrators (DanNotes, November 28, 2012)
 

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)

Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)Powerful Google developer tools for immediate impact! (2023-24 C)
Powerful Google developer tools for immediate impact! (2023-24 C)
 
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
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
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?
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)A Domino Admins Adventures (Engage 2024)
A Domino Admins Adventures (Engage 2024)
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
Real Time Object Detection Using Open CV
Real Time Object Detection Using Open CVReal Time Object Detection Using Open CV
Real Time Object Detection Using Open CV
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
🐬 The future of MySQL is Postgres 🐘
🐬  The future of MySQL is Postgres   🐘🐬  The future of MySQL is Postgres   🐘
🐬 The future of MySQL is Postgres 🐘
 
+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...
 
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
 
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?
 

Real-time, collaborative applications in Plone

  • 2. What are real-time web applications? ● Instant Messaging ● Voice and Video conferencing ● File transfer ● Feeds/Notifications ● Collaborative editing
  • 3. Building blocks ● XMPP Server and connection manager – E.g ejabberd ● Nginx/Apache – Reverse proxy for connection manager ● Plone add-ons – collective.xmpp.core – collective.xmpp.collaboration – collective.xmpp.chat – collective.xmpp.pubsub – <your product here>
  • 4. How does XMPP work? ● eXtensible Messaging and Presence Protocol ● Universal Unique Identifier (JID) – jcbrand@jabber.plone.org/sprint ● Data exchanged as XML “stanzas” – Presence – Message – Info/Query (IQ) ● Roster and social graph
  • 9. Strophe.js ● XMPP library for JavaScript ● Connects via BOSH to XMPP server
  • 10. Strophe.js ● XMPP library for JavaScript ● Connects via BOSH to XMPP server ● Can add stanza handlers
  • 11. Strophe.js ● XMPP library for JavaScript ● Connects via BOSH to XMPP server ● Can add stanza handlers ● Can build stanzas
  • 12. Strophe.js ● XMPP library for JavaScript ● Connects via BOSH to XMPP server ● Can add stanza handlers ● Can build stanzas ● Plugins – MUC, Roster, Pubsub, Data Forms etc.
  • 13. Backbone.js ● Enables structured javascript – Models ● Key/value binding ● Custom events – Collections – Views ● Declarative event handling ● Templates – RESTful JSON interface for connecting with API
  • 14. Backbone.js Examples ● Creating a model: ● Instantiating a model:
  • 15. Backbone.js Examples ● Creating a view
  • 17. Real-time Plone ● Messaging – Multi/Single user chat – File sharing ● Collaboration – Documents, Whiteboard, UML, Mindmaps – Translations – Pair programming (Plone IDE, Theme Editor) ● Continuous feedback – System status messages – User feeds ● Audio/Video Conferencing
  • 18. Thanks for attending J-C Brand web: http://opkode.com email: jc@opkode.com twitter: @jcopkode IRC: jcbrand
  • 19. Image credits: ● Legomen looking for guinnes http://estiletesemcabo.tumblr.com/post/2190751969 ● Stormtrooper on facebook http://www.flickr.com/photos/balakov/ ● Legoman with innards http://www.facebook.com/pages/Jason-Freeny/34170123768 ● Lego wizard http://en.bricker.ru/sets/5614/

Hinweis der Redaktion

  1. Outline of talk: - Define real-time web apps and relevancy to Plone - Look at collective.xmpp.chat and it&apos;s building blocks - Detailed look at XMPP - Strophe.js - Backbone.js - Vision for a real-time Plone Outcome for this talk: - Good overview of tech involved - Inspired by possibilities Theme of talk is collaboration People collaborate to create Plone, and Plone is then used to enable other people to collaborate on getting other tasks done. What makes me excited about real-time applications on Plone, is their potential for creating even more natural and fluid means for user-collaboration.
  2. * Instant Messaging In the late 90s we have multiple closed proprietary messaging protocols. Common for users to run more than one chat application because no single vendor had 100% market share. Developers started writing multi-protocol clients to, Protocols often undocumented and the IM networks aggressively changed the protocols Jeremie Miller announced the Jabber project in January 1999. It&apos;s first production release was in 2000. * Voice and Video conferencing XMPP can be extended, and Jingle is such an extension that makes VoIP and video conf possible. The media sessions are P2P or mediated through relay server and XMPP is used to initiate and manage (route) these sessions. So session negotiation happens over the XMPP channel and media is exchanged over a separate data channel. * File transfer The data transfer that Jingle facilitates doesn&apos;t have to be multimedia, can be any file.
  3. Outro I&apos;ve started this talk, by mentioning collaboration, how Plone is the product of collaboration and how Plone enables other people, outside of our community of developers, resellers and integrators, to collaborate. I hope this talk made you more excited as to the possibilities for real-time applications in Plone and that you would like to collaborate with me on realising the potential these technologies hold for the future of Plone.
  4. * eXtensible Messaging and Presence Protocol - Protocol for moving small, structured pieces of data between two places. * Data exchanged as XML in &quot;stanzas&quot; * XML data organised as pair of streams, one per direction of communication * Each stream has opening element, stanzas, closing element. * Each stanza is a 1st level element. * At the end of the closing element, two streams form pair of valid XML docs * Designed for small bits of info. Large blobs can be sent in an out-of-band transport layer with XMPP acting as signaling layer. * Extensible: * XML is very extensible * Extremely easy to add new features (both forward and backward compatible) * More than 200 registered extensions * Social media constructs and featues baked in. * Contract rosters create social graph * Presence notifications sent automatically when user logs in * Makes it a good choice as underlying tech, devs can focus on unique app
  5. * Message Stanza Stanzas are the direct child elements of the root &lt;stream/&gt; element. *id* optional attr denoting the conversation *type* optional subtype (chat, groupchat) *xml:lang* for human readable content * Presence Stanza Optional &quot;type&quot; attribute to signal whether a user is available for comm. It can also request or respond to contact subscriptions. o probe -- Request for an entity&apos;s current presence; SHOULD be generated only by a server on behalf of a user. o error -- Error occurred regarding processing or delivery of a previously-sent presence The presence stanza can have the following child elements: * &lt;show/&gt;: &quot;away&quot;, &quot;chat&quot;, &quot;dnd&quot; and &quot;xa&quot;. * &lt;status/&gt;: text meant for human consumption. * &lt;priority/&gt;: non-human-readable XML char data (priority level of the resource) * IQ Stanza Provides a structured request-response mechanism. For example: Roster management, querying the latest published elements of a node and data forms. Extended elements: Either declare new namespace by including &quot;xmlns&quot; attribute on element, or use namespace prefixes.
  6. * Message Stanza Stanzas are the direct child elements of the root &lt;stream/&gt; element. *id* optional attr denoting the conversation *type* optional subtype (chat, groupchat) *xml:lang* for human readable content * Presence Stanza Optional &quot;type&quot; attribute to signal whether a user is available for comm. It can also request or respond to contact subscriptions. o probe -- Request for an entity&apos;s current presence; SHOULD be generated only by a server on behalf of a user. o error -- Error occurred regarding processing or delivery of a previously-sent presence The presence stanza can have the following child elements: * &lt;show/&gt;: &quot;away&quot;, &quot;chat&quot;, &quot;dnd&quot; and &quot;xa&quot;. * &lt;status/&gt;: text meant for human consumption. * &lt;priority/&gt;: non-human-readable XML char data (priority level of the resource) * IQ Stanza Provides a structured request-response mechanism. For example: Roster management, querying the latest published elements of a node and data forms. Extended elements: Either declare new namespace by including &quot;xmlns&quot; attribute on element, or use namespace prefixes.
  7. * Message Stanza Stanzas are the direct child elements of the root &lt;stream/&gt; element. *id* optional attr denoting the conversation *type* optional subtype (chat, groupchat) *xml:lang* for human readable content * Presence Stanza Optional &quot;type&quot; attribute to signal whether a user is available for comm. It can also request or respond to contact subscriptions. o probe -- Request for an entity&apos;s current presence; SHOULD be generated only by a server on behalf of a user. o error -- Error occurred regarding processing or delivery of a previously-sent presence The presence stanza can have the following child elements: * &lt;show/&gt;: &quot;away&quot;, &quot;chat&quot;, &quot;dnd&quot; and &quot;xa&quot;. * &lt;status/&gt;: text meant for human consumption. * &lt;priority/&gt;: non-human-readable XML char data (priority level of the resource) * IQ Stanza Provides a structured request-response mechanism. For example: Roster management, querying the latest published elements of a node and data forms. Extended elements: Either declare new namespace by including &quot;xmlns&quot; attribute on element, or use namespace prefixes.
  8. * Message Stanza Stanzas are the direct child elements of the root &lt;stream/&gt; element. *id* optional attr denoting the conversation *type* optional subtype (chat, groupchat) *xml:lang* for human readable content * Presence Stanza Optional &quot;type&quot; attribute to signal whether a user is available for comm. It can also request or respond to contact subscriptions. o probe -- Request for an entity&apos;s current presence; SHOULD be generated only by a server on behalf of a user. o error -- Error occurred regarding processing or delivery of a previously-sent presence The presence stanza can have the following child elements: * &lt;show/&gt;: &quot;away&quot;, &quot;chat&quot;, &quot;dnd&quot; and &quot;xa&quot;. * &lt;status/&gt;: text meant for human consumption. * &lt;priority/&gt;: non-human-readable XML char data (priority level of the resource) * IQ Stanza Provides a structured request-response mechanism. For example: Roster management, querying the latest published elements of a node and data forms. Extended elements: Either declare new namespace by including &quot;xmlns&quot; attribute on element, or use namespace prefixes.