Motivation
Provide the capabilities to actors to synchronize with a backend.
Installation
add it to your project using npm install tarant-sync-client --save
or yarn add tarant-sync-client
Usage
Initialize the sync client with the configuration you desire and add it to your actor system as both a materializxer and a resolver
import { RemoteResolverMaterializer } from "tarant-sync-client";
import AppActor from '../AppActor';
const config : any = {
sync: {
active: true,
delay: 1000
},
paths: {
pull: "/pull",
push: "/push",
},
actorTypes: { AppActor }
}
const remote = new RemoteResolverMaterializer(config)
const system = ActorSystem.for(ActorSystemConfigurationBuilder.define()
.withMaterializers([remote])
.withResolvers([remote])
.done())
your actors will require to implement IUpdatable (UpdateFrom) and IExportable (toJson)
import { Actor } from "tarant";
import { IUpdatable, IExportable } from "tarant-sync-client"
export default class AppActor extends Actor implements IUpdatable, IExportable {
constructor(name: string) {
super(name)
}
addOne() {
this.counter++
}
toJson(){
return {
id: this.id,
type:"AppActor",
counter: this.counter
}
}
updateFrom({ counter }: any): void {
this.counter = counter
}
private counter = 1;
}
confiuration options
- sync.active: boolean value defining if there should be live updates pull from the backend
- sync.delay: period of time in miliseconds between updates from the backend
- paths.pull: path to endpoint for pulling data from the backend
- paths.push: path to endpoint for pushing data to the backend
- ActorTypes: objects registering the type of actors that should be sync with the backend