Overview¶
This is an XMPP server that you can integrate with your Django app.
Features¶
- Supports BOSH, WebSockets, and plain XMPP with TLS
- Customizable integration with Django’s user database.
- Scalable, can run on multiple servers.
- Supported authentication methods:
- Django web session, through any of
- BOSH prebind
- session tokens
- session cookies
- Plain password
- Anonymous
- Django web session, through any of
- XMPP extensions supported so far:
- XEP-0030 Service Discovery
- XEP-0077 In-Band Registration
- XEP-0078 Non-SASL Authentication
- XEP-0124 Bidirectional streams Over Synchronous HTTP (BOSH)
- XEP-0199 XMPP Ping
- XEP-0206 XMPP Over BOSH
- XEP-0280 Message Carbons
(Also, some XMPP extensions are client-to-client and do not necessarily have to be explicitly supported by the server to work.)
Requirements¶
- Python >= 3.5
- Django >= 1.11 (but other frameworks might be supported in the future)
- channels >= 2.0.2
- slixmpp
- defusedxml (if you want protection against XML bombs)
- some ASGI host, e.g. daphne
- some channel layer, e.g. channels_redis
(you can use the in-memory channel layer that comes with
channels, but only if you don’t plan to run more than one Django server instance)
Optional:
- Twisted (if you plan to support plain XMPP, which may include connecting external server components)
- pyOpenSSL (if you plan to support plain XMPP with TLS)