nexacon_messaging 1.0.0 copy "nexacon_messaging: ^1.0.0" to clipboard
nexacon_messaging: ^1.0.0 copied to clipboard

Real-time messaging SDK for Nexacon — instant messaging with presence, typing indicators, delivery receipts, and message history.

nexacon_messaging #

Real-time messaging SDK for Nexacon — instant messaging with presence, typing indicators, delivery receipts, and message history.

Features #

  • Real-time messaging — Send and receive messages instantly over WebSocket
  • Presence tracking — Online/offline/away/busy status for users
  • Typing indicators — Composing/paused chat state notifications (XEP-0085)
  • Delivery receipts — Automatic delivery confirmation (XEP-0184)
  • Read receipts — Manual read receipt sending
  • Message history — Fetch paginated message history via REST API
  • Auto-reconnect — Built-in reconnection with exponential backoff
  • Heartbeat/ping — Keeps connection alive with periodic pings

Installation #

Add to your pubspec.yaml:

dependencies:
  nexacon_messaging: ^1.0.0

Quick Start #

import 'package:nexacon_messaging/nexacon_messaging.dart';

// Create the messaging instance
final messaging = NexaconMessaging(
  apiKey: 'your-api-key',
  secretKey: 'your-secret-key',
);

// Connect
final connected = await messaging.connect(
  nxid: 'user@nxservice.quantumvision-tech.com',
  password: 'nx-token',
  wsUrl: 'wss://nxservice.quantumvision-tech.com/xmpp-websocket',
);

if (connected) {
  // Listen for incoming messages
  messaging.messageStream.listen((msg) {
    print('Message from ${msg.from}: ${msg.body}');
  });

  // Listen for presence changes
  messaging.presenceStream.listen((presence) {
    print('${presence.from} is ${presence.status}');
  });

  // Listen for typing indicators
  messaging.typingStream.listen((event) {
    print('${event.from} is ${event.isTyping ? "typing..." : "stopped typing"}');
  });

  // Listen for delivery receipts
  messaging.deliveryReceiptStream.listen((receipt) {
    print('Message ${receipt.messageId} delivered to ${receipt.from}');
  });

  // Send a message
  await messaging.sendMessage(
    to: 'peer@nxservice.quantumvision-tech.com',
    message: 'Hello!',
  );

  // Send typing indicator
  messaging.sendTypingIndicator('peer@nxservice.quantumvision-tech.com');

  // Update your presence
  messaging.setOnline();    // Available
  messaging.setAway();      // Away
  messaging.setBusy();      // Do not disturb
  messaging.setOffline();   // Offline

  // Fetch message history
  final history = await messaging.getMessageHistory(
    peer: 'peer@nxservice.quantumvision-tech.com',
    page: 1,
    pageSize: 20,
  );
  print('Loaded ${history.messages.length} messages');
}

Connect with NX Token #

If you have an NX token endpoint, you can connect in one step:

final connected = await messaging.connectWithToken(
  username: '+255123456789',
  apiKey: 'your-api-key',
  secretKey: 'your-secret-key',
);

Presence Management #

// Subscribe to a user's presence updates
messaging.subscribeToPresence('peer@nxservice.quantumvision-tech.com');

// Check cached presence
final status = messaging.getPresenceStatus('peer@nxservice.quantumvision-tech.com');
print('Status: $status'); // NxPresenceStatus.online, .offline, .away, .busy

// Query presence via REST API
final presence = await messaging.getPresence('peer@nxservice.quantumvision-tech.com');

Typing Indicators #

// User started typing
messaging.sendTypingIndicator('peer@nxservice.quantumvision-tech.com', isTyping: true);

// User stopped typing
messaging.sendTypingIndicator('peer@nxservice.quantumvision-tech.com', isTyping: false);

// User is active in the chat
messaging.sendActiveState('peer@nxservice.quantumvision-tech.com');

// User left the chat
messaging.sendInactiveState('peer@nxservice.quantumvision-tech.com');

Cleanup #

await messaging.disconnect();
messaging.dispose();

License #

MIT

1
likes
0
points
245
downloads

Publisher

unverified uploader

Weekly Downloads

Real-time messaging SDK for Nexacon — instant messaging with presence, typing indicators, delivery receipts, and message history.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, http, web_socket_client

More

Packages that depend on nexacon_messaging