WAMP v2 Client and Router for Dart.
To install xconn
, use the following command:
With Dart
dart pub add xconn
With Flutter
flutter pub add xconn
Creating a client:
import "package:xconn/xconn.dart";
void main() async {
var client = Client();
var session = await client.connect("ws://localhost:8080/ws", "realm1");
}
Once the session is established, you can perform WAMP actions. Below are examples of all 4 WAMP operations:
void exampleSubscribe(Session session) async {
var subscription = await session.subscribe("io.xconn.example", eventHandler);
print("Subscribed to topic io.xconn.example");
}
void eventHandler(Event event) {
print("Received Event: args=${event.args}, kwargs=${event.kwargs}, details=${event.details}");
}
void examplePublish(Session session) async {
await session.publish("io.xconn.example", args: ["Hello World!", 100], kwargs: {"xconn": "dart"});
print("Published to topic io.xconn.example");
}
void exampleRegister(Session session) async {
var registration = await session.register("io.xconn.echo", invocationHandler);
print("Registered procedure io.xconn.echo");
}
Result invocationHandler(Invocation invocation) {
return Result(args: invocation.args, kwargs: invocation.kwargs, details: invocation.details);
}
void exampleCall(Session session) async {
var result = await session.call("io.xconn.echo", args: ["Hello World!"], kwargs: {"number": 100});
print("Call result: args=${result.args}, kwargs=${result.kwargs}, details=${result.details}");
}
Authentication is straightforward. Simply create the object of the desired authenticator and pass it to the Client.
Ticket Auth
void main() async {
var ticketAuthenticator = TicketAuthenticator(ticket, authid);
var client = Client(authenticator: ticketAuthenticator);
var session = await client.connect("ws://localhost:8080/ws", "realm1");
}
Challenge Response Auth
void main() async {
var craAuthenticator = WAMPCRAAuthenticator(secret, authid);
var client = Client(authenticator: craAuthenticator);
var session = await client.connect("ws://localhost:8080/ws", "realm1");
}
Cryptosign Auth
void main() async {
var cryptosignAuthenticator = CryptoSignAuthenticator(privateKey, authid);
var client = Client(authenticator: cryptosignAuthenticator);
var session = await client.connect("ws://localhost:8080/ws", "realm1");
}
For more detailed examples or usage, refer to the examples folder of the project.
Setting up a basic server is straightforward:
import 'package:xconn/xconn.dart';
void main() async {
var router = Router()
..addRealm('realm1');
var server = Server(router);
await server.start('localhost', 8080);
}
For more advanced usage, such as integrating an authenticator, refer to the sample tool available in the bin folder of the project.
For questions or issues, contact the maintainers: