xmpp_stone 0.4.4-dev.2 copy "xmpp_stone: ^0.4.4-dev.2" to clipboard
xmpp_stone: ^0.4.4-dev.2 copied to clipboard

Xmpp Stone is lightweight XMPP client library written completely in Dart.

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 #

  • 2021-12-14: Added support for XEP-0016: Privacy Lists
  • 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.XmppAccountSettings accountSettings = xmpp.XmppAccountSettings.fromJid('nick@damain.com/resource', 'password');
  accountSettings.port = kIsWeb ? 5291 : 5222;
  accountSettings.wsPath = 'xmpp-websocket'; // null or your custom xmpp path
  accountSettings.wsProtocols = ['xmpp']; // or your custom protocols

  xmpp.Connection connection = xmpp.Connection.getInstance(accountSettings);
  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
70
likes
0
pub points
75%
popularity

Publisher

unverified uploader

Xmpp Stone is lightweight XMPP client library written completely in Dart.

Homepage

License

unknown (LICENSE)

Dependencies

collection, console, crypto, cryptoutils, image, intl, quiver, synchronized, tuple, universal_io, unorm_dart, web_socket_channel, xml

More

Packages that depend on xmpp_stone