@cloudpss/ubrpc
Version:
Rpc server/client build on websocket and ubjson.
51 lines (50 loc) • 1.33 kB
JavaScript
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);
}
});