UNPKG

nodeway

Version:

nodeway microservices

133 lines (120 loc) 3.12 kB
nodeway: 基于nodejs的微服务(Microservices) ========================================== ``` 一个微服务(Microservices)被定义为一个JS类(Class)。 nodeway直接发布这个JS类,使浏览器或nodejs可以远程调用。 ``` Installing ---------- ``` # npm install nodeway -g ``` MacOS ----- ``` # vi ~/.bash_profile export NODE_PATH="/usr/local/lib/node_modules:/root/node_modules" ``` Linux ----- ``` # vi ~/.bashrc export NODE_PATH="/usr/local/lib/node_modules:/root/node_modules" ``` Using ----- ``` # nodeway Usage: nodeway [options] Options: -h, --help output usage information -V, --version output the version number --class <class>[,<class>]* class list --host <host> Listen ip or hostname, default '127.0.0.1' --port <port> Listen port, default '80' --docs [root] Httpd docs root, optional --config <file> Config file Prompt: Either --class or --config must be one. ``` Example 'HelloWorld.js' ----------------------- 建立测试目录,在测试目录下创建'HelloWorld.js'微服务,内容如下: ```js const Nodeway = require("nodeway"); class HelloWorld extends Nodeway { constructor(uuid) { super(uuid); } async say(message) { this.broadcast('data', `${message}(${Nodeway.onlineCount})`); return new Promise(function(resolve, reject) { resolve(message); }); } } module.exports = HelloWorld; ``` Run --- ``` # nodeway --config nodeway-helloworld/config.js & ``` Test ---- 编写浏览器调用微服务测试文件'index.html',内容如下: ``` <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>HelloWorld</title> <script type="text/javascript" src="/HelloWorld.js"></script> </head> <body> <script> let api = new HelloWorld; api.on('data', message => document.write(message+'<br/>')); setInterval(async function(api) { try { let message = await api.say('Hello Safari!'); document.write(message+'<br/>'); } catch(e) {} }, 6000, api); </script> </body> </html> ``` 在浏览器中访问'http://localhost:8080'进行测试。 编写nodejs调用微服务测试文件'test_from_nodejs.js',内容如下: ```js const requireFromUrl = require('require-from-url'); const readline = require('readline'); function main(HelloWorld) { let api = new HelloWorld; api.on('data', console.log); readline.createInterface({ input: process.stdin, output: process.stdout }) .on('line', async function(line) { try { let message = await api.say(line.trim()); console.log(message); } catch(e) {} }) .on('close', process.exit); } requireFromUrl(["http://localhost:8080/HelloWorld.js"], function(err, HelloWorld) { if(!err) main(HelloWorld); }); ``` 执行node test_from_nodejs.js进行测试。 ``` 你也可以用命令npm install nodeway_helloworld直接安装这个测试例子。 ``` License ------- MIT © [May xiaoya zhang](john.zhang@yishizhencang.com)