Search packages, repositories and app categories

Package detailsv0.3.3

xmpp_stone

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

30-day downloads
409
Likes
72
Pub points
40

Install package

flutter pub add xmpp_stone

Package Overview

Package selection guidance compiled from public package information, community data, and project usage.

Xmpp Stone is a lightweight XMPP client library built entirely in Dart, designed for real-time communication in Flutter applications. It enables seamless integration of XMPP (Extensible Messaging and Presence Protocol) functionality, supporting instant messaging, presence updates, and real-time data exchange. The library is ideal for developers seeking efficient, cross-platform real-time communication without heavy dependencies. With its clean API and focus on performance, it simplifies the implementation of chat and collaboration features in apps. Source code is publicly available on GitHub for transparency and customization.

Use cases

  • Real-time messaging apps
  • Presence and status tracking
  • Chat-based collaboration tools
  • IoT device communication
  • Cross-platform chat integration

Key features

  • Lightweight and fast
  • Pure Dart implementation
  • Supports XMPP protocol
  • Easy integration with Flutter
  • Open-source and extensible

Suitable for

  • Developers building chat apps
  • Teams needing real-time sync
  • Projects requiring XMPP support
  • Flutter apps with low latency needs
  • Custom real-time communication solutions

Considerations

  • Limited documentation
  • No official maintenance status
  • Requires XMPP server setup
  • Not suitable for complex messaging workflows
  • Depends on external XMPP server infrastructure

Original README

Original README snapshot from the linked source repository. Visit the repository for the latest content.

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

Categories

Dependencies

Dependency list 10 items

Source repository

Projects using this package

No data available yet.