Nascent Political Miscreant

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

    Keywords

    none

    Install

    npm i ym-rpc

    DownloadsWeekly Downloads

    2

    Version

    0.7.1

    License

    ISC

    Unpacked Size

    23.3 kB

    Total Files

    9

    Last publish

    Collaborators

    • xuezi