ym-rpc

0.7.1 • Public • Published

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

Readme

Keywords

none

Package Sidebar

Install

npm i ym-rpc

Weekly Downloads

1

Version

0.7.1

License

ISC

Unpacked Size

23.3 kB

Total Files

9

Last publish

Collaborators

  • xuezi