Skip to content

xmppjs/xmpp.js

Repository files navigation

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

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

See @xmpp/component-core

Included in @xmpp/component


XEP-0082: XMPP Date and Time Profiles

See @xmpp/time


XEP-0198: Stream Management

See @xmpp/stream-management

Included in @xmpp/client


XEP-0388: Extensible SASL Profile

See @xmpp/sasl2

Included in @xmpp/client


XEP-0386: Bind 2

See @xmpp/client-core

Included in @xmpp/client


XEP-0484: Fast Authentication Streamlining Tokens

See @xmpp/client-core

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.