项目作者: koorchik

项目描述 :
Event Emitter Mole RPC (JSON RPC library) transport
高级语言: JavaScript
项目地址: git://github.com/koorchik/node-mole-rpc-transport-eventemitter.git
创建时间: 2018-12-05T23:32:15Z
项目社区:https://github.com/koorchik/node-mole-rpc-transport-eventemitter

开源协议:MIT License

下载


Event Emitter Transport for Mole RPC (JSON RPC Library)

npm version
Build Status
Known Vulnerabilities

Mole-RPC is a tiny transport agnostic JSON-RPC 2.0 client and server which can work both in NodeJs, Browser, Electron etc.

This is EventEmitter based tranport but there are many more transports.

Usage example

  1. const MoleClient = require('mole-rpc/MoleClient');
  2. const MoleServer = require('mole-rpc/MoleServer');
  3. const EventEmitterTransportClient = require('mole-rpc-transport-eventemitter/TransportClient');
  4. const EventEmitterTransportServer = require('mole-rpc-transport-eventemitter/TransportServer');
  5. const EventEmitter = require('events');
  6. async function main() {
  7. const emitter = new EventEmitter();
  8. await runServer(emitter);
  9. await runClients(emitter);
  10. }
  11. async function runServer(emitter) {
  12. const server = new MoleServer({
  13. transports: [
  14. new EventEmitterTransportServer({
  15. emitter,
  16. inTopic: 'fromClient1',
  17. outTopic: 'toClient1'
  18. }),
  19. new EventEmitterTransportServer({
  20. emitter,
  21. inTopic: 'fromClient2',
  22. outTopic: 'toClient2'
  23. })
  24. ]
  25. });
  26. server.expose({
  27. getGreeting(name) {
  28. return new Promise((resolve, reject) => {
  29. setTimeout(() => {
  30. resolve(`Hi, ${name}`);
  31. }, 1000);
  32. });
  33. }
  34. });
  35. }
  36. async function runClients(emitter) {
  37. const client1 = new MoleClient({
  38. transport: new EventEmitterTransportClient({
  39. emitter,
  40. inTopic: 'toClient1',
  41. outTopic: 'fromClient1'
  42. })
  43. });
  44. const client2 = new MoleClient({
  45. transport: new EventEmitterTransportClient({
  46. emitter,
  47. inTopic: 'toClient2',
  48. outTopic: 'fromClient2'
  49. })
  50. });
  51. console.log('FROM CLIENT 1', await client1.callMethod('getGreeting', 'User1'));
  52. console.log('FROM CLIENT 2', await client2.callMethod('getGreeting', 'User2'));
  53. }
  54. main();