zero-remote

1.2.10 • Public • Published

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()


Readme

Keywords

Package Sidebar

Install

npm i zero-remote

Weekly Downloads

1

Version

1.2.10

License

ISC

Unpacked Size

44.7 kB

Total Files

10

Last publish

Collaborators

  • wc24