Skip to content

mohammadshrahi/stomp_dart_client

 
 

Repository files navigation

Stomp Dart

This library provides an implementation for a STOMP client connecting to a remote server. It should work for both pure dart and flutter.

Usage

Initialize

The client gets created the specified config, please see the Config section to see all available options

StompClient client = StompClient(
    config: StompConfig(
        url: 'wss://yourserver',
        onConnect: onConnectCallback
    )
);

The connect callback should be used to make sure that we are actually connected before we subscribe or send messages

void onConnectCallback(StompClient client, StompFrame connectFrame) {
    // use the client object passed.
}

Connect

client.activate();

Subscribe

client.subscribe(destination: '/foo/bar', headers: {}, callback: (frame) {
    // Received a frame for this subscription
    print(frame.body);
})

Ack/Nack

client.ack(id: message-id, headers: headers);

client.nack(id: message-id, headers: headers);

Unsubscribe

client.subscribe(...) returns a function which can be called with an optional map of headers

dynamic unsubscribeFn = client.subscribe(destination: '/foo/bar', headers: {}, callback: (frame) {
    // Received a frame for this subscription
    print(frame.body);
})
...
unsubscribeFn(unsubscribeHeaders: {});

Send

client.send(destination: '/foo/bar', body: 'Your message body', headers: {});

Disconnect

client.deactivate();

StompConfig

This table shows all available options in StompConfig

Option Description
url: String The url of the server you want connect to (required)
reconnectDelay: int The time in milliseconds between reconnect attempts. Set to 0 if you don't want to reconnect automatically
heartbeatOutgoing: int The time in milliseconds between outgoing heartbeat messages. Set to 0 to not send any heartbeats
heartbeatIncoming: int The time in milliseconds between incoming heartbeat messages. Set to 0 to not receive any heartbeats
connectionTimeout: Duration Time duration it waits until a connection attempt is aborted
stompConnectHeaders: Map<String, String> The header values which will be used on the STOMP connect frame
webSocketConnectHeaders: Map<String, dynamic> The header values which will be used when connecting to the underyling WebSocket
beforeConnect: Future Function() A async function which will be awaited before a connection is established.
onConnect: Function(StompClient, StompFrame) Function to be called when the client successfully connected to the server.
onDisconnect: Function(StompFrame) Function to be called when the client disconnects expectedly
onStompError: Function(StompFrame) Function to be called when the stomp server sends an error frame
onUnhandledFrame: Function(StompFrame) Function to be called when the server sends a unrecognized frame
onUnhandledMessage: Function(StompFrame) Function to be called when a subscription message does not have a handler
onUnhandledReceipt: Function(StompFrame) Function to be called when a receipt message does not have a registered watcher
onWebSocketError: Function(dynamic) Function to be called when the underyling WebSocket throws an error
onWebSocketDone: Function() Function to be called when the underyling WebSocket is done/disconnected
onDebugMessage: Function(String) Function to be called for debug messages generated by the internal message handler

Use Stomp with SockJS

Use StompConfig.SockJS constructor instead of default StompConfig constructor.

StompClient client = StompClient(
    config: StompConfig.SockJS(
        url: 'https://yourserver',
        onConnect: onConnectCallback
    )
);

Development

Running unit tests

pub run test -p "chrome,vm" test/

Generating coverage data

pub global activate coverage
pub global run coverage:collect_coverage --port=8111 --out=coverage.json --wait-paused --resume-isolates & dart --disable-service-auth-codes --enable-vm-service=8111 --pause-isolates-on-exit test/test_all.dart

And to convert to lcov

pub global run coverage:format_coverage --lcov --in=coverage.json --out=lcov.info --packages=.packages --report-on=lib

About

Dart STOMP client for easy messaging interoperability.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Dart 100.0%