Skip to content

remote-sync server for bindings for tarant and express

License

Notifications You must be signed in to change notification settings

tarantx/tarant-sync-router-express

Folders and files

NameName
Last commit message
Last commit date

Latest commit

author
kanekotic
Jan 30, 2021
039c214 · Jan 30, 2021
Nov 30, 2019
Dec 1, 2019
Dec 30, 2018
Dec 30, 2018
Dec 30, 2018
Dec 30, 2018
Jan 12, 2019
Dec 30, 2018
Jan 9, 2019
Mar 30, 2019
Jan 30, 2021
Dec 30, 2018
Dec 30, 2018
Dec 7, 2019
Jan 30, 2021

Repository files navigation

logomakr_0zeodi

npm Build Status Coverage Status PRs Welcome issues Welcome npm GitHub issues GitHub pull requests Downloads

Motivation

remote-sync server for bindings clients using routers or tarant-sync-router-express

Installation

add it to your project using npm install tarant-sync-router-express --save or yarn add tarant-sync-router-express

Usage

initialize your controllers/routers by calling the SyncController with the actor system and the wanted configuration. Adding them to your express app.

import SyncController from "tarant-sync-router-express"
import { ActorSystem, ActorSystemConfigurationBuilder } from 'tarant'
import AppActor from '../AppActor'

const app: express.Application = express()
const port: number = 3002
const config : any  = {
      paths: {
          pull: "/pull", 
          push: "/push", 
      },
      actorTypes: { AppActor }
}

const system : any = ActorSystem.for(ActorSystemConfigurationBuilder.define().done())  

app.use(SyncController(system, config))

app.listen(port, () => {
    console.log(`Listening at http://localhost:${port}/`)
})

your actors will require to implement IUpdatable (UpdateFrom) and IExportable (toJson)

import { Actor } from "tarant";
import { IUpdatable, IExportable } from "tarant-sync-router-express"

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

  1. paths.pull: path to endpoint for pulling data from the backend
  2. paths.push: path to endpoint for pushing data to the backend
  3. ActorTypes: objects registering the type of actors that should be sync with the backend
Created my free logo at LogoMakr.com