Code Monkey home page Code Monkey logo

luke's Introduction

NPM version build status Test coverage

#Luke

A RPC framework for typescript, with the simplest way to setup.

##Example

import {
	Server,
	Client,
  decorators,
  providers,
} from '@t2ee/luke';
const {
  RemoteMethod,
  RemoteService,
} = decorators;
const {
  AMQPProvider,
} = providers;

//provider for luke.
const provider = new AMQPProvider('amqp://localhost:5672');


// this is the definition shared by both server and client.

@RemoteService('Test')
class ITestService {
    @RemoteMethod()
    async echo(message: string): Promise<string> { return null;}
}


// this is the real implementation of the service
class TestService extends ITestService {
    async echo(message: string) {
        return `You've said ${message}`;
    }
}

const server = new Server(provider); // listen on port 6001
server.register(ITestService);
server.start()
// tada! server is now running.

const client = new Client(provider);

const testClient = client.getClient(ITestService);

// now let's hear some echoooooooos!
(async () => {
	const message = await testClient.echo('hello world');
	console.log(message);
})().catch(e => console.log(e));



##Providers ###AMQPProvider(uri: string, topic: string) ###RedisProvider(uri: string, topic: string, retryTimeout: number) ###SocketIOProvider(socketOrPort: number | string)

##API

###Client

####constructor(provider: Provider)

constructor, takes an provider implementation

####getClient(service: new () => T): T

Wrap the service with hooks, returns the client that are callable

###Server

####constructor(provider: Provider)

constructor, takes an provider implementation

####register(service: new () => T): void

Register an interface

####start(): void

Start listening

####stop(): void

Stop listening

####isRunning(): boolean

If service is running

####setConcurrency(concurrency: number): void

Set concurrency of running task runners.

###abstract Serializable

abstract class, data other than number, string, boolean that pass through the interfaces, must be children of Serializable.

class Person extends Serializable<Person> {
    name: string;
    age: number;
    fromJson(json: utils.Json): Person {
        this.name = json['name'] as string;
        this.age = json['age'] as number;
        return this;
    }
    toJson(): utils.Json {
        return {
            name: this.name,
            age: this.age,
        };
    }
}

####abstract toJson(): utils.Json

return Json result

####abstract fromJson(data: utils.Json): T

return parsed instance

##Plans

  • TcpProvider
  • UdpProvider

luke's People

Contributors

joesonw avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.