# zero-remote

> 常连接网络

Latest version **1.2.10** (published 2022-07-07) · ISC license · 0 weekly downloads

## Install

```sh
npm install zero-remote
pnpm add zero-remote
yarn add zero-remote
bun add zero-remote
```

## Health

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

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.2.10 |
| Published | 2022-07-07 |
| First published | 2021-11-17 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Unpacked size | 43.6 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | 蓝面包wc24@qq.com |
| Maintainers | wc24 |
| Keywords | 网络, 通信, 协议 |

## Links

- npm: https://www.npmjs.com/package/zero-remote
- npm.io page: https://npm.io/package/zero-remote

## Dependencies (2)

- [ws](https://npm.io/package/ws.md) ^7.4.2
- [zero-dispatcher](https://npm.io/package/zero-dispatcher.md) ^1.2.0

## Recent versions

- 1.2.10 (latest) — 2022-07-07
- 1.2.6 — 2022-01-28
- 1.2.5 — 2022-01-28
- 1.2.3 — 2021-12-24
- 1.2.2 — 2021-12-24
- 1.2.1 — 2021-12-24
- 1.2.0 — 2021-12-24
- 1.1.3 — 2021-12-01
- 1.1.2 — 2021-11-27
- 1.1.1 — 2021-11-26
- 1.1.0 — 2021-11-26
- 1.0.11 — 2021-11-25
- 1.0.10 — 2021-11-25
- 1.0.9 — 2021-11-24
- 1.0.8 — 2021-11-23
- … 7 more at https://npm.io/package/zero-remote/versions

## README

# zeroRemote
zeroRemote 常网络通信框架
使用接口文件做过游戏协议
支持回调
支持RPC

以下是测试代码
```

interface T1 {
    fuck: { a: number, b: Function }
}

class User extends GameVisitor {
    clear(): void {

    }
    start() {
        this.getRouter<T1>("fuck").on("fuck", (data) => {
            setTimeout(() => {
                data.b()
            }, 2000);
        })
    }
}


let zn = new ZeroRemote(new ws.Server({ port: 8888 }), (carer) => {
    return new User(carer)
})

class Client extends ZeroRemoteClient {
    url: string = "ws://localhost:8888"
    stringify(value: ISCMessage | ICSMessage): string {
        return JSON.stringify(value)
    }
    showMask(): void {
        console.log("showMask")
    }
    hideMask(): void {
        console.log("hideMask")
    }
    error(error: any): void {
        console.log(error)
        console.log("error")
    }
    linked(): void {
        console.log("linked")

    }
    popup(): void {
        console.log("popup")
    }
    linking(): void {
        console.log("linking")
    }
}



setTimeout(() => {
    let cc = new Client()
    cc.link(() => {
        let sender = cc.getSender<T1>("fuck")
        sender.fuck({
            a: 5, b: () => {
                console.log("1")
            }
        })
        sender.fuck({
            a: 5, b: () => {
                console.log("2")
                sender.fuck({
                    a: 5, b: () => {
                        console.log("3")
                    }
                })
            }
        })
    })
}, 2000)


//-------------------------------------------------



interface A {
    init(a: string, b: number): number
    init2(): void
}

interface B {
    a(): void
}

/**
 * 新建服务
 */
new ZeroRemote(new ws.Server({ port: 2000 }), (carer) => {
    return new RPCVisitor(carer)
})

RPCVisitor.addRemote<A>(async (visitor) => {
    let a = await visitor.rs.init("a", 4)
    console.log("打印远程回调结果")
    console.log(a)
}, "tt")
RPCVisitor.addRemote<B>(async (visitor) => {
    let xx = async () => {
        await visitor.rs.a()
        xx()
    }
    xx()
})
class CS extends RPCClient implements A {
    constructor() {
        super("ws:127.0.0.1:2000", "tt")
    }
    init(a: string, b: number): number {
        console.log(a)
        return 5 + b
    }
    init2(): void {
        console.log("_init2____")
    }
}
class CS2 extends RPCClient implements B {
    constructor() {
        super("ws:127.0.0.1:2000")
    }
    a(): void {
        console.log("aaa")
    }
}

let client = new CS()
let client2 = new CS2()
client.link()
client.on("open", () => {
    console.log("rpc linked")
})
client2.link()


```

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