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);
    }
});
