0.7.1 • Published 6 years ago
ym-rpc v0.7.1
A RPC PLATFORM BASE ON SOCKET.IO
INSTALLATION
npm install @ym/rpc [--save]
引入
import RPC from '@ym/rpc'
/**
* service side
* when a client rpc connect,
* will add a rpc to global.rpcMap, use global.rpcMap
*/
RPC.install(server, {
users: {
name: {
appid: appid,
appsecret: appsecret
}
...
},
port: port // diffrent with process port, default 2001
});
/**
* client side
* when client side success connect to service side,
* will add a clientRpc param to global, use global.clientRpc
*/
RPC.register({
protocol: protocol, // http or https,default http
hostname: hostname, // default 127.0.0.1
port: port, // default 2001
appid: appid,
appsecret: appsecret
});
Get a rpc of a client
let rpc = global.rpcMap.get(username);
Handle a event listener
rpc.on(event, callback);
Emit a socket event
rpc.emit(event, data);
Emit a socket event and got a callback
rpc.route(event, data, callback);
EXAMPLE
/* service side */
import express from 'express';
import http from 'http';
import RPC from '@ym/rpc';
const app = express();
const server = http.createServer(app);
RPC.install(server, {
users:{
xuezi: {
appid: 'xuezi',
appsecret: 123456
}
},
port: 2001
});
app.get('/rpc', function(req, res){
let rpc = global.rpcMap.get('xuezi');
rpc.route('pid', {}, function(data){
res.send(data);
});
});
server.listen(3000);
/* client side */
import express from 'express';
import RPC from '@ym/rpc';
const app = express();
RPC.register( {
protocol: 'http',
hostname: '127.0.0.1',
port: 2001,
appid: 'xuezi',
appsecret: 123456
}).then(function(clientRpc){
clientRpc.on('pid', function(data){
let pid = process.pid;
clientRpc.emit('pid', {pid: pid});
});
app.listen(2000);
}).catch(e=>{
throw e;
});
route a stream
// receive
rpc.stream(event, function(stream, data){
console.log(data);
stream.pipe(require('fs').createWriteStream(path));
});
// send
rpc.pipe(event, require('fs').createReadStream(path), data, callback);
0.7.1
6 years ago