# snonorpc

> nodejs rpc

Latest version **0.1.6** (published 2019-07-30) · 0 weekly downloads

## Install

```sh
npm install snonorpc
pnpm add snonorpc
yarn add snonorpc
bun add snonorpc
```

## Health

**Score 10/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; low quality score; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.6 |
| Published | 2019-07-30 |
| First published | 2019-07-17 |
| Weekly downloads | 0 |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 0 |
| Unpacked size | 46.1 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Maintainers | sorrymeika |
| Keywords | rpc, node rpc |

## Links

- npm: https://www.npmjs.com/package/snonorpc
- Repository: https://github.com/sorrymeika/sonorpc
- Homepage: https://github.com/sorrymeika/sonorpc#readme
- Issues: https://github.com/sorrymeika/sonorpc/issues
- npm.io page: https://npm.io/package/snonorpc

## Recent versions

- 0.1.6 (latest) — 2019-07-30
- 0.1.5 — 2019-07-30
- 0.1.4 — 2019-07-29
- 0.1.3 — 2019-07-27
- 0.1.2 — 2019-07-22
- 0.1.1 — 2019-07-17
- 0.1.0 — 2019-07-17

## README

# sonorpc
nodejs rpc

由于package命名错误转至：https://www.npmjs.com/package/sonorpc

## 简介

sonorpc是一个轻量级、高性能的node rpc框架，由Registry(注册中心)、Provider(服务提供者)、Consumer(服务消费者)组成，提供远程方法调用、负载均衡、服务自动注册和发现功能。

## 如何使用

`npm install sonorpc`

```javascript
import { createProvider } from "sonorpc"
```

## Provider服务提供者

### 创建服务

DemoService.js

```javascript
const { Service } = requie("sonorpc");

class DemoService extends Service {
    async sayHello(arg1, arg2) {
        const result = await this.ctx.mysql.query('select * from user');
        return {
            success: true,
            data: result
        }
    }
}
```

### 启动Provider服务

scripts/start.js

```javascript
const { createProvider } = requie("sonorpc");
const provider = createProvider({
    // 注册服务提供者名称
    name: 'user',
    // 日志类示例
    logger: console,
    // 上下文
    ctx: {
        mysql: mysql.createPool(config.mysql)
    },
    // 监听端口
    port: 3005,
    // 服务类
    serviceClasses: [DemoService],
    // 注册中心配置
    registry: {
        // 注册中心地址
        host: '127.0.0.1',
        // 注册中心端口
        port: 3006
    }
});

provider.start(() => {
    console.log('服务已启动');
});
```

## Registry注册中心

scripts/registry.js

```javascript
const { startRegistry } = require('sonorpc');

startRegistry({
    port: 3006
});
```


## Consumer服务消费者

### 创建消费者

consumer.js

```javascript
const { registerConsumer } = require('sonorpc');

const consumer = registerConsumer({
    // 服务提供者名称
    providerName: 'user',
    port: 3006
});

module.exports = consumer;
```

### 调用服务

DemoService.js

```javascript
const consumer = require('../consumer');

class DemoService {
    testMe(...args) {
        return new Promise((resolve, reject) => consumer.invoke('demo.testMe', args, (err, data) => {
            err ? reject(err) : resolve(data);
        }));
    }
}
```

---
_Source: https://npm.io/package/snonorpc · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
