XmppStone
Lightweight XMPP client library written completely in Dart. My intention is to write simple to use library for future XMPP client based on Flutter.
Supported documents:
- RFC6120: Extensible Messaging and Presence Protocol (XMPP): Core
- RFC6121: Extensible Messaging and Presence Protocol (XMPP): Instant Messaging and Presence
- XEP-0198: Stream Management
- XEP-0085: Chat State Notifications
- XEP-0318: Best Practices for Client Initiated Presence Probes
- XEP-0280: Message Carbons
Partly supported:
- XEP-0030: Service Discovery
- XEP-0313: Message Archive Management
Actively working on:
- XEP-0059: Result Set Management
- XEP-0004: Data Forms
Latest news
- 2020-10-30: Added support for XEP-0280: Message Carbons
- 2020-10-30: Added initial support for XEP-0313: Message Archive Management
- 2020-10-30: Added logging mechanism
- 2020-07-23: Added support for XEP-0318: Best Practices for Client Initiated Presence Probes
- 2020-05-02: Added initial support for XEP-0198 : Stream Management
- 2020-05-02: Added initial support for XEP-0085 : Chat State Notifications
- 2019-04-02: added support for: XEP-0054: vcard-temp
- 2019-04-01: added support for SHA-1 and SHA-256 authentication algorithm
Usage
import 'package:xmpp_stone/xmpp_stone.dart' as xmpp;
main() {
xmpp.Connection connection = new xmpp.Connection("user@domain", "password", 5222);
connection.open();
}
Features
1. Logging
Log level
Client can set logging level of the library with command:
Log.logLevel = LogLevel.VERBOSE;
XMPP traffic logging
Xmpp traffic can be enabled or disabled with:
Log.logXmpp = false
2. Message Archive Management
Feature is work in progress, API is subject to change.
Initial implementation of Message Archive Management.
RST is not yet implemented.
Usage:
- Grabbing the module
connection.getMamModule()
- Querying all messages:
mamManager.queryAll();
- Querying messages based on date (All parameters are optional):
mamManager.queryByTime(start: startTime, end: endTime, jid: buddyJid);
- Querying messages based on messageId (All parameters are optional): This method requires urn:xmpp:mam:2#extended to be supported by the serve, soon it will be available to check feature support.
mamManager.queryById(beforeId: beforeId, afterId: afterId, jid: buddyJid});
Checking capabilities of the server:
mamManager.isQueryByDateSupported
mamManager.isQueryByIdSupported
mamManager.isQueryByJidSupported