GitHub - xmppjs/xmpp.js: XMPP for JavaScript (original) (raw)
xmpp.js
XMPP is the Extensible Messaging and Presence Protocol, a set of open technologies for instant messaging, presence, multi-party chat, voice and video calls, collaboration, lightweight middleware, content syndication, and generalized routing of XML data.
xmpp.org/about-xmpp/technology-overview/
xmpp.js is a JavaScript library for XMPP.
Get started
goals
universal
It aims to run everywhere JavaScript runs and make use of the best network transport available.
xmpp.js is known to be used with Node.js, browsers, WebWorker, React Native, Bun, GJS and Duktape.
reliable
By default, it handles errors and will automatically reconnect. With appropriate configuration it will even loop through a list of endpoints. You don't have to write a single line of code to handle network failures.
Releases follow the Semantic Versioning specification
modular
Each feature is implemented as a module that can be added or removed easily. Including core XMPP features.
small
We avoid third party dependencies.
For the web, we make the sure the default client doesn't exceed 15 kb (gzipped), for reference, that's less than half the size of React.
Getting help
Do you need help with working with xmpp.js? Please reach out to our community by posting in the Discussions section of this project.
Built with xmpp.js
- WorkAdventure
- Mustang
- Crypho
- MeshCentral
- openHAB
- Wobbly
- Alcatel-Lucent Rainbow
- Telldus
- ConnectyCube
- Sockethub
- matrix-bitfrost
- WordPress Telegram Bot
- Logitech Harmony Hub library
- gx-twilio: Bridge between Twilio SMS and XMPP
Feel free to send a PR to add your project or organization to this list.
Protocols
RFC 6120 - Extensible Messaging and Presence Protocol (XMPP): Core
See @xmpp/client-core and @xmpp/component-core
Included in @xmpp/client and @xmpp/component
RFC 7590 - Use of Transport Layer Security (TLS) in the Extensible Messaging and Presence Protocol (XMPP)
See @xmpp/tls
Included in @xmpp/client
RFC 7622 - Extensible Messaging and Presence Protocol (XMPP): Address Format
See @xmpp/jid
Included in @xmpp/client and @xmpp/component
RFC 7395 - An Extensible Messaging and Presence Protocol (XMPP) Subprotocol for WebSocket
See @xmpp/websocket
Included in @xmpp/client
draft-cridland-xmpp-session-01 Here Lies Extensible Messaging and Presence Protocol (XMPP) Session Establishment
See @xmpp/session-establishment
XEP-0368: SRV records for XMPP over TLS
See @xmpp/resolve
Included in @xmpp/client
XEP-0156: Discovering Alternative XMPP Connection Methods
See @xmpp/resolve
Included in @xmpp/client
XEP-0114: Jabber Component Protocol
Included in @xmpp/component
XEP-0082: XMPP Date and Time Profiles
See @xmpp/time
XEP-0198: Stream Management
Included in @xmpp/client
XEP-0388: Extensible SASL Profile
See @xmpp/sasl2
Included in @xmpp/client
XEP-0386: Bind 2
Included in @xmpp/client
XEP-0484: Fast Authentication Streamlining Tokens
Included in @xmpp/client
credits
xmpp.js is a rewrite of node-xmpp and learned a lot from it.
Thanks to all xmpp.js and node-xmpp contributors.