UNPKG

@cloudpss/ubrpc

Version:

53 lines (52 loc) 1.39 kB
import { RpcServer } from '@cloudpss/ubrpc'; import { interval, take, tap } from 'rxjs'; import { WebSocketServer } from 'ws'; const a = { greetings: 'Hello, ', /** * @inheritdoc * @param name 名字 */ async hello(name: string) { console.log('hello', name); await Promise.resolve(); return `${this.greetings}${name}`; }, /** * @inheritdoc * @param i 间隔 */ timer(i?: number) { return interval(i).pipe( take(10), tap({ next: console.log, complete: () => console.log('complete'), error: () => console.log('error'), subscribe: () => console.log('subscribe'), unsubscribe: () => console.log('unsubscribe'), finalize: () => console.log('finalize'), }), ); }, }; const rpc = new RpcServer(a, async (meta, id) => { return new Promise((resolve) => { setTimeout(() => { resolve({}); }, 10); }); }); const server = new WebSocketServer({ host: 'localhost', port: 8090, path: '/', }); // eslint-disable-next-line @typescript-eslint/no-misused-promises server.on('connection', async (socket) => { try { await rpc.connect(socket as unknown as WebSocket); } catch (ex) { console.log(ex); } });