occaecatidicta
Version:
148 lines (131 loc) • 4.95 kB
text/typescript
import {TCPMailBox} from '../lib/rpc-client/mailboxes/tcp-mailbox';
require('source-map-support/register');
import {preload} from './preload';
preload();
import * as pinusrpc from '..';
import {configure} from 'omelox-logger';
import {getLogger} from 'omelox-logger';
import {createTcpMailBox} from '..';
// configure('./config/log4js.json');
let logger = getLogger('omelox-rpc', 'sample-client');
// remote service interface path info list
const records = [
{namespace: 'user', serverType: 'test', path: __dirname + '/remote/test'}
];
const context = {
serverId: 'test-server-1'
};
// server info list
const servers = [
{id: 'test-server-1', serverType: 'test', host: '127.0.0.1', port: 3333},
{id: 'test-server-2', serverType: 'test', host: '127.0.0.1', port: 3334},
{id: 'test-server-3', serverType: 'test', host: '127.0.0.1', port: 3335},
{id: 'unuse-server-1', serverType: 'unuse', host: '127.0.0.1', port: 3336}
];
// route parameter passed to route function
let routeParam = null;
// route context passed to route function
const routeContext = servers;
// route function to caculate the remote server id
const routeFunc = function(routeParam: any, msg: any,
routeContext: typeof servers, cb: (err: Error|null, serverid?: string) => void) {
cb(null, routeContext[0].id);
};
const client = pinusrpc.createClient({routeContext: routeContext,
router: routeFunc, context: context,
mailboxFactory: createTcpMailBox,
bufferMsg: true,
interval: 2000,
timeout: 20000
});
client.start(err => {
if(err) {
console.error('start client err', err);
return;
}
client.addProxies(records);
client.addServers(servers);
// test().then(ret =>
// console.log('test end ret', ret))
// .catch(err => {
// console.error(' test end with err', err);
// });
client.proxies.user.test.service.echo.toServer('test-server-3', 111, 'DDD', 'unused')
.then(ret => {
console.log(' rpc end ret1', ret);
})
.catch(err => {
console.error(' rpc end err', err);
});
client.proxies.user.test.service.echo.toServer('test-server-1', 666, 'AAA1111').then(ret => {
console.log('@@111', ret);
});
client.proxies.user.test.service.echo.toServer('test-server-1', 666, 'AAA@@').then(ret => {
console.log('@@222', ret);
});
client.proxies.user.test.service.echo.to('test-server-1', true)( 666, 'AAA###').then(ret => {
console.log('@@@333', ret);
});
setTimeout(() => {
client.proxies.user.test.service.echo.toServer('test-server-3', 222, 'DDD2', 'unused')
.then(ret => {
console.log(' rpc end ret2', ret);
})
.catch(err => {
console.error(' rpc end err', err);
});
}, 5000);
test().then(ret => console.log('test ret', ret)).catch(err => console.log('test err', err));
});
async function test() {
console.log('rpc client start ok.');
let m: any = Buffer.from('hello');
// n = 'bbb';
let fs = require('fs');
// m = fs.readFileSync('./skill.js').toString();
m = [ 'onReloadSkill',
// [ m ],
[ '210108' ],
{ type: 'push', userOptions: {}, isPush: true } ] ;
// m = ['route', [m], {}, {}];
// m = require('./test');
// m = 3.14;
// m = 'aaa';
// m = 100325;
// m = {a: '111', b: 'bbb', c: 'ccc'};
// m = [1, '2', {a: 'bbb'}, 3.12, m, false];
// m = false;
// m = '0';
// function(err, resp, data) {
// // client.proxies.user.test.service.echo(routeParam, m, 'aaa', function(err, resp, data) {
// if(err) {
// console.error(err.stack);
// }
//
// // setTimeout(function() {
// console.log(resp);
// console.log(data);
// // console.log(typeof resp)
// // console.log(resp.toString())
// // }, 1000);
// }
// const rets = await client.proxies.user.test.service.echo(null, m, 'aaa');
// console.log('rets', rets);
// const toServerRet = await client.proxies.user.test.service.echo.toServer('test-server-1', m, 'aaa');
// console.log('toServerRet', toServerRet);
try {
} catch (err) {
console.log('~~ toServer(*) err', err);
}
const toServersRet = await client.proxies.user.test.service.echo.toServer('test-server-3', m, 'zzDDD', 'unused');
console.log('toServersRet', JSON.stringify(toServersRet, null, 4));
console.log('!!!!@@');
await new Promise(done => setTimeout(done, 5000));
console.log('~~ latency end');
const latencyRet = await client.proxies.user.test.service.echo.toServer('test-server-3', 'latency!!', 'aaa');
console.log('~~~ latency', latencyRet);
return 'test success';
}
process.on('rejectionHandled', p => {
console.error('rejectionHandled !!~~', p);
});