0.12.2 • Published 2 years ago
ataraxia-services v0.12.2
ataraxia-services
Services with RPC and events for an Ataraxia network.
- Based around well-defined contracts, making what a service supports very clear
- Register services, allowing them to be consumed anywhere in the network
- Access services via identifiers or events
- Listen for when services become available or unavailable either globally or specifically on a single service
- Support for remote events via Atvik, letting nodes listen to events from another node
Create proxy objects for a more natural way to call methods and listen to events, with support for type conversions and TypeScript declarations
Usage
To use services on top of a network install ataraxia-services
:
npm install ataraxia-services
Services can then be consumed and registered by creating a Services instance on top of the network:
import { Services, ServiceContract, stringType } from 'ataraxia-services';
const net = ... // setup network with at least one transport
const services = new Services(net);
services.onServiceAvailable(service => console.log(service.id, 'is now available'));
services.onServiceUnavailable(service => console.log(service.id, 'is no longer available'));
// Join the network
await net.join();
// Join the services layer on top of the network
await services.join();
// Use contracts to describe services
const EchoService = new ServiceContract()
.defineMethod('echo', {
returnType: stringType,
parameters: [
{
name: 'message',
type: stringType
}
]
});
// Easily register and expose services to other nodes
services.register('echo', EchoService.implement({
echo(message) {
return Promise.resolve(message);
}
}));
// Consume a service registered anywhere, local or remote
const echoService = services.get('echo');
if(echoService.available) {
// Call methods
await echoService.call('echo', 'Hello world');
// Or create a proxy for a cleaner API
const proxied = echoService.as(EchoService);
await proxied.echo('Hello world');
}
0.12.1
2 years ago
0.12.2
2 years ago
0.12.0
2 years ago
0.11.0
3 years ago
0.10.0
3 years ago
0.9.0
3 years ago
0.9.1
3 years ago
0.8.2
4 years ago
0.8.1
4 years ago
0.8.0
4 years ago
0.7.3
4 years ago
0.7.2
5 years ago
0.7.1
5 years ago
0.7.0
5 years ago
0.6.1
6 years ago
0.6.0
6 years ago
0.5.3
6 years ago
0.5.2
6 years ago
0.5.1
6 years ago
0.5.0
6 years ago
0.4.4
6 years ago
0.4.3
6 years ago
0.4.2
6 years ago
0.4.1
6 years ago
0.4.0
6 years ago
0.3.2
6 years ago
0.3.1
6 years ago
0.3.0
6 years ago