antlink 0.0.8 → 0.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -26,7 +26,7 @@ $ ant relink [code] # 重启蚁巢(需要安全码)
26
26
 
27
27
 
28
28
  ```shell
29
- $ ant link # 启动蚁巢
29
+ $ ant link [port] # 启动蚁巢 (默认端口5200)
30
30
  $ ant info # 运行状态
31
31
  $ ant backup [name] # 备份蚁巢
32
32
  $ ant restore [name] # 恢复蚁巢
package/lib/order/link.js CHANGED
@@ -1,4 +1,16 @@
1
1
  'use strict';
2
- module.exports = async(arg)=>{
3
- console.log(arg);
2
+ const log = require('../utils/logs')
3
+ const http = require('../server/http');
4
+ const cluster = require('../server/cluster');
5
+ module.exports = (arg)=>{
6
+ const port = arg[0]||5200;
7
+ if(port>0){
8
+ log.g(port);
9
+ const cb = (err)=>{ log.r(err);};
10
+ cluster(()=>{
11
+ http(port);
12
+ },cb)
13
+ }else{
14
+ log.r('Port is illegal');
15
+ }
4
16
  }
package/lib/order/nest.js CHANGED
@@ -31,10 +31,10 @@ module.exports = async(arg)=>{
31
31
  const dirAdd = await dir.add('data','evolve','cache','logs');
32
32
  if(dirAdd){
33
33
  // 新建配置文件
34
- let obj = {name:arg[0]||'queen'};
35
- const {version} = require('../../package.json');
36
- obj.version = version;
34
+ const obj = {};
35
+ obj.name = arg[0]||'queen';
37
36
  obj.addTime = new Date().getTime();
37
+ obj.host = ['127.0.0.1','localhost'];
38
38
  const rrid = require('rrid');
39
39
  obj.appId = rrid.key(32);
40
40
  const scode = rrid.key(32);
@@ -0,0 +1,21 @@
1
+ 'use strict';
2
+ const os = require('os')
3
+ module.exports = (server,cb)=>{
4
+ const wk = require('./worker');
5
+ const cluster = require('cluster');
6
+ if (cluster.isMaster || cluster.isPrimary) {
7
+ for (let i = 0;i < os.cpus().length;i++) {
8
+ // 开始一个服务
9
+ wk(cluster,cb);
10
+ };
11
+ cluster.on('exit', () => {
12
+ // 重启一个服务
13
+ wk(cluster,cb);
14
+ })
15
+ }else{
16
+ server();//实例化服务
17
+ process.on('message', (msg) => {
18
+ msg === 'goto' && process.send('back');
19
+ })
20
+ }
21
+ }
@@ -0,0 +1,11 @@
1
+ 'use strict';
2
+ const http = require('http');
3
+ const service = require('./service');
4
+ module.exports = (port)=>{
5
+ // 创建一个服务器实例
6
+ const server = http.createServer((req, res) => {
7
+ service(req,res);
8
+ });
9
+ // 服务器监听指定端口,这里是3000
10
+ server.listen(port);
11
+ }
@@ -0,0 +1,4 @@
1
+ 'use strict';
2
+ module.exports = (req,res)=>{
3
+ console.log(1000);
4
+ }
@@ -0,0 +1,36 @@
1
+ 'use strict';
2
+ const {def} = require('../utils/type')
3
+ module.exports = (cluster,callback)=> {
4
+ let i = 0;
5
+ const ms = 5;
6
+ let wk = null;
7
+ let timer = null;
8
+ try{
9
+ wk = cluster.fork();
10
+ }catch(err){
11
+ if(def(callback)) callback(err);
12
+ return
13
+ }
14
+ /* 每几秒发送一个心跳包 并记录次数加1 */
15
+ timer = setInterval(() => {
16
+ i++;
17
+ wk.send('goto', () => { })
18
+ /* 如果大于5次都没有得到响应说明可能挂掉了就退出 并清楚定时器 */
19
+ if (i > 5) {
20
+ try {
21
+ process.kill(wk.process.pid);
22
+ } catch (err) {
23
+ if(def(callback)) callback(err);
24
+ }
25
+ wk.send('goto', () => { })
26
+ if (timer) {
27
+ clearInterval(timer);
28
+ timer = null;
29
+ }
30
+ }
31
+ }, 1000*ms);
32
+ /* 如果接收到心跳响应就让记录值-1回去 */
33
+ wk.on('message', (msg) => {
34
+ msg === 'back' && i--
35
+ })
36
+ }
@@ -0,0 +1,6 @@
1
+ 'use strict';
2
+ module.exports = {
3
+ def(d){
4
+ return typeof d === 'function';
5
+ }
6
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "antlink",
3
- "version": "0.0.8",
3
+ "version": "0.0.9",
4
4
  "description": "Ant Nest AI Framework.",
5
5
  "main": "index.js",
6
6
  "author": "weduu",