UNPKG

@cloudpss/ubrpc

Version:

Rpc server/client build on websocket and ubjson.

51 lines (50 loc) 1.33 kB
import { RpcServer } from '@cloudpss/ubrpc'; import { interval, take, tap } from 'rxjs'; import { WebSocketServer } from 'ws'; const a = { greetings: 'Hello, ', /** * @inheritdoc * @param {string} name 名字 */ async hello(name) { console.log('hello', name); await Promise.resolve(); return `${this.greetings}${name}`; }, /** * @inheritdoc * @param {number | undefined} i 间隔 */ timer(i) { 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, (meta) => { console.log('req', meta); //throw new Error('B'); return {}; }); 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); } catch (ex) { console.log(ex); } });