@azteam/express 1.2.489 → 1.2.493
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/lib/Server.js +111 -44
- package/lib/controller/Controller.js +2 -2
- package/lib/controller/SocketEvent.js +45 -0
- package/lib/controller/index.js +7 -0
- package/package.json +1 -1
- package/src/Server.js +115 -42
- package/src/controller/Controller.js +1 -1
- package/src/controller/SocketEvent.js +31 -0
- package/src/controller/index.js +1 -0
package/lib/Server.js
CHANGED
|
@@ -53,10 +53,9 @@ function compressJson(message) {
|
|
|
53
53
|
return _pako["default"].deflate(JSON.stringify(message));
|
|
54
54
|
}
|
|
55
55
|
var Server = /*#__PURE__*/function () {
|
|
56
|
-
function Server(
|
|
57
|
-
var
|
|
58
|
-
var
|
|
59
|
-
var errorCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : function () {};
|
|
56
|
+
function Server() {
|
|
57
|
+
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
|
|
58
|
+
var errorCallback = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : function () {};
|
|
60
59
|
_classCallCheck(this, Server);
|
|
61
60
|
this.options = _objectSpread(_objectSpread({
|
|
62
61
|
redis: null,
|
|
@@ -81,43 +80,10 @@ var Server = /*#__PURE__*/function () {
|
|
|
81
80
|
});
|
|
82
81
|
this.middlewares = [];
|
|
83
82
|
this.controllers = [];
|
|
84
|
-
|
|
85
|
-
return _this.initController(dir);
|
|
86
|
-
});
|
|
83
|
+
this.socketEvents = [];
|
|
87
84
|
this.callbackError = errorCallback;
|
|
88
85
|
}
|
|
89
86
|
_createClass(Server, [{
|
|
90
|
-
key: "addController",
|
|
91
|
-
value: function addController(name, version, controller) {
|
|
92
|
-
this.controllers.push({
|
|
93
|
-
name: name,
|
|
94
|
-
version: version,
|
|
95
|
-
controller: controller
|
|
96
|
-
});
|
|
97
|
-
return this;
|
|
98
|
-
}
|
|
99
|
-
}, {
|
|
100
|
-
key: "initController",
|
|
101
|
-
value: function initController(apiDir) {
|
|
102
|
-
var excludeList = this.options.excludeList;
|
|
103
|
-
if (_fs["default"].existsSync(apiDir)) {
|
|
104
|
-
var controllerDirs = _fs["default"].readdirSync(apiDir);
|
|
105
|
-
for (var i = 0; i < controllerDirs.length; i += 1) {
|
|
106
|
-
var dirName = controllerDirs[i];
|
|
107
|
-
if (_fs["default"].statSync("".concat(apiDir, "/").concat(dirName)).isDirectory()) {
|
|
108
|
-
var versionDirs = _lodash["default"].differenceWith(_fs["default"].readdirSync("".concat(apiDir, "/").concat(dirName)), excludeList);
|
|
109
|
-
for (var j = 0; j < versionDirs.length; j += 1) {
|
|
110
|
-
var versionName = versionDirs[j];
|
|
111
|
-
// eslint-disable-next-line global-require,import/no-dynamic-require
|
|
112
|
-
var controller = require("".concat(apiDir, "/").concat(dirName, "/").concat(versionName, "/controller"))["default"];
|
|
113
|
-
this.addController(dirName, versionName, controller);
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}
|
|
117
|
-
}
|
|
118
|
-
return this;
|
|
119
|
-
}
|
|
120
|
-
}, {
|
|
121
87
|
key: "createExpressApp",
|
|
122
88
|
value: function createExpressApp() {
|
|
123
89
|
var _this$options = this.options,
|
|
@@ -162,10 +128,45 @@ var Server = /*#__PURE__*/function () {
|
|
|
162
128
|
}
|
|
163
129
|
return app;
|
|
164
130
|
}
|
|
131
|
+
}, {
|
|
132
|
+
key: "addController",
|
|
133
|
+
value: function addController(name, version, controller) {
|
|
134
|
+
this.controllers.push({
|
|
135
|
+
name: name,
|
|
136
|
+
version: version,
|
|
137
|
+
controller: controller
|
|
138
|
+
});
|
|
139
|
+
return this;
|
|
140
|
+
}
|
|
141
|
+
}, {
|
|
142
|
+
key: "initController",
|
|
143
|
+
value: function initController(apiDir) {
|
|
144
|
+
var excludeList = this.options.excludeList;
|
|
145
|
+
if (_fs["default"].existsSync(apiDir)) {
|
|
146
|
+
var controllerDirs = _fs["default"].readdirSync(apiDir);
|
|
147
|
+
for (var i = 0; i < controllerDirs.length; i += 1) {
|
|
148
|
+
var dirName = controllerDirs[i];
|
|
149
|
+
if (_fs["default"].statSync("".concat(apiDir, "/").concat(dirName)).isDirectory()) {
|
|
150
|
+
var versionDirs = _lodash["default"].differenceWith(_fs["default"].readdirSync("".concat(apiDir, "/").concat(dirName)), excludeList);
|
|
151
|
+
for (var j = 0; j < versionDirs.length; j += 1) {
|
|
152
|
+
var versionName = versionDirs[j];
|
|
153
|
+
// eslint-disable-next-line global-require,import/no-dynamic-require
|
|
154
|
+
var controller = require("".concat(apiDir, "/").concat(dirName, "/").concat(versionName, "/controller"))["default"];
|
|
155
|
+
this.addController(dirName, versionName, controller);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
return this;
|
|
161
|
+
}
|
|
165
162
|
}, {
|
|
166
163
|
key: "startAPI",
|
|
167
164
|
value: function startAPI(port) {
|
|
168
|
-
var
|
|
165
|
+
var _this = this;
|
|
166
|
+
var serviceDirs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
167
|
+
serviceDirs.map(function (dir) {
|
|
168
|
+
return _this.initController(dir);
|
|
169
|
+
});
|
|
169
170
|
if (!_lodash["default"].isEmpty(this.controllers)) {
|
|
170
171
|
var cookieOption = this.options.cookieOption;
|
|
171
172
|
var app = this.createExpressApp();
|
|
@@ -291,7 +292,7 @@ var Server = /*#__PURE__*/function () {
|
|
|
291
292
|
var controller = data.controller;
|
|
292
293
|
var controllerName = data.name;
|
|
293
294
|
var controllerVersion = data.version;
|
|
294
|
-
var listPublicRouter = controller.
|
|
295
|
+
var listPublicRouter = controller.getPublicRouters();
|
|
295
296
|
_lodash["default"].map(listPublicRouter, function (method) {
|
|
296
297
|
var name = method.name,
|
|
297
298
|
type = method.type;
|
|
@@ -358,8 +359,8 @@ var Server = /*#__PURE__*/function () {
|
|
|
358
359
|
if (process.env.NODE_ENV === 'development') {
|
|
359
360
|
console.log(error.errors);
|
|
360
361
|
}
|
|
361
|
-
if (
|
|
362
|
-
|
|
362
|
+
if (_this.callbackError) {
|
|
363
|
+
_this.callbackError(error, req.originalUrl);
|
|
363
364
|
}
|
|
364
365
|
if (req.callbackError) {
|
|
365
366
|
req.callbackError(error);
|
|
@@ -402,18 +403,84 @@ var Server = /*#__PURE__*/function () {
|
|
|
402
403
|
}
|
|
403
404
|
throw new Error('No controllers in use API');
|
|
404
405
|
}
|
|
406
|
+
}, {
|
|
407
|
+
key: "addSocketEvent",
|
|
408
|
+
value: function addSocketEvent(name, version, event) {
|
|
409
|
+
this.socketEvents.push({
|
|
410
|
+
name: name,
|
|
411
|
+
version: version,
|
|
412
|
+
SocketEvent: event
|
|
413
|
+
});
|
|
414
|
+
return this;
|
|
415
|
+
}
|
|
416
|
+
}, {
|
|
417
|
+
key: "initSocketEvent",
|
|
418
|
+
value: function initSocketEvent(socketDir) {
|
|
419
|
+
var excludeList = this.options.excludeList;
|
|
420
|
+
if (_fs["default"].existsSync(socketDir)) {
|
|
421
|
+
var socketDirs = _fs["default"].readdirSync(socketDir);
|
|
422
|
+
for (var i = 0; i < socketDirs.length; i += 1) {
|
|
423
|
+
var dirName = socketDirs[i];
|
|
424
|
+
if (_fs["default"].statSync("".concat(socketDir, "/").concat(dirName)).isDirectory()) {
|
|
425
|
+
var versionDirs = _lodash["default"].differenceWith(_fs["default"].readdirSync("".concat(socketDir, "/").concat(dirName)), excludeList);
|
|
426
|
+
for (var j = 0; j < versionDirs.length; j += 1) {
|
|
427
|
+
var versionName = versionDirs[j];
|
|
428
|
+
// eslint-disable-next-line global-require
|
|
429
|
+
var event = require("".concat(socketDir, "/").concat(dirName, "/").concat(versionName, "/controller"))["default"];
|
|
430
|
+
this.addSocketEvent(dirName, versionName, event);
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
}
|
|
435
|
+
return this;
|
|
436
|
+
}
|
|
405
437
|
}, {
|
|
406
438
|
key: "startSocket",
|
|
407
439
|
value: function startSocket(port) {
|
|
408
|
-
|
|
440
|
+
var _this4 = this;
|
|
441
|
+
var serviceDirs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
|
|
442
|
+
serviceDirs.map(function (dir) {
|
|
443
|
+
return _this4.initSocketEvent(dir);
|
|
444
|
+
});
|
|
445
|
+
var socketEvents = this.socketEvents;
|
|
446
|
+
if (!_lodash["default"].isEmpty(socketEvents)) {
|
|
409
447
|
var httpServer = (0, _http.createServer)();
|
|
410
448
|
var app = this.createExpressApp();
|
|
411
449
|
httpServer.on('request', app);
|
|
412
450
|
var io = new _socket.Server(httpServer);
|
|
413
451
|
httpServer.listen(port);
|
|
452
|
+
httpServer.on('listening', function () {
|
|
453
|
+
console.log('listening', "ServerIO start at http://localhost:".concat(httpServer.address().port));
|
|
454
|
+
});
|
|
455
|
+
var eventList = [];
|
|
456
|
+
var msg = [];
|
|
457
|
+
_lodash["default"].map(socketEvents, function (data) {
|
|
458
|
+
var SocketEvent = data.SocketEvent;
|
|
459
|
+
var eventName = data.name;
|
|
460
|
+
var eventVersion = data.version;
|
|
461
|
+
var obj = new SocketEvent(io);
|
|
462
|
+
var listPublicEvent = obj.getPublicEvents(io);
|
|
463
|
+
_lodash["default"].map(listPublicEvent, function (method) {
|
|
464
|
+
var name = method.name,
|
|
465
|
+
type = method.type;
|
|
466
|
+
eventList.push(obj[name]);
|
|
467
|
+
msg.push({
|
|
468
|
+
name: eventName,
|
|
469
|
+
version: eventVersion,
|
|
470
|
+
type: type,
|
|
471
|
+
method: name
|
|
472
|
+
});
|
|
473
|
+
});
|
|
474
|
+
});
|
|
475
|
+
console.table(msg);
|
|
476
|
+
io.on('connection', function (socket) {
|
|
477
|
+
_lodash["default"].map(eventList, function (func) {
|
|
478
|
+
func(socket);
|
|
479
|
+
});
|
|
480
|
+
});
|
|
414
481
|
return io;
|
|
415
482
|
}
|
|
416
|
-
throw new Error('No
|
|
483
|
+
throw new Error('No events in use SOCKET');
|
|
417
484
|
}
|
|
418
485
|
}]);
|
|
419
486
|
return Server;
|
|
@@ -23,8 +23,8 @@ var Controller = /*#__PURE__*/function () {
|
|
|
23
23
|
this.repository = repository;
|
|
24
24
|
}
|
|
25
25
|
_createClass(Controller, [{
|
|
26
|
-
key: "
|
|
27
|
-
value: function
|
|
26
|
+
key: "getPublicRouters",
|
|
27
|
+
value: function getPublicRouters() {
|
|
28
28
|
var child = this;
|
|
29
29
|
var result = [];
|
|
30
30
|
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports["default"] = void 0;
|
|
7
|
+
function _typeof(o) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, _typeof(o); }
|
|
8
|
+
function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
|
|
9
|
+
function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
|
|
10
|
+
function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
|
|
11
|
+
function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
|
|
12
|
+
function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
|
|
13
|
+
var SocketEvent = /*#__PURE__*/function () {
|
|
14
|
+
function SocketEvent(io) {
|
|
15
|
+
_classCallCheck(this, SocketEvent);
|
|
16
|
+
this.io = io;
|
|
17
|
+
}
|
|
18
|
+
_createClass(SocketEvent, [{
|
|
19
|
+
key: "getPublicEvents",
|
|
20
|
+
value: function getPublicEvents() {
|
|
21
|
+
var child = this;
|
|
22
|
+
var result = [];
|
|
23
|
+
|
|
24
|
+
// eslint-disable-next-line no-proto
|
|
25
|
+
while (Object.getPrototypeOf(child.__proto__)) {
|
|
26
|
+
var data = Object.getOwnPropertyNames(Object.getPrototypeOf(child));
|
|
27
|
+
data.map(function (methodName) {
|
|
28
|
+
var matches = methodName.match(/^(schedule|listen)/);
|
|
29
|
+
if (matches) {
|
|
30
|
+
result.push({
|
|
31
|
+
type: matches[0],
|
|
32
|
+
name: methodName
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
return true;
|
|
36
|
+
});
|
|
37
|
+
// eslint-disable-next-line no-proto
|
|
38
|
+
child = child.__proto__;
|
|
39
|
+
}
|
|
40
|
+
return result;
|
|
41
|
+
}
|
|
42
|
+
}]);
|
|
43
|
+
return SocketEvent;
|
|
44
|
+
}();
|
|
45
|
+
var _default = exports["default"] = SocketEvent;
|
package/lib/controller/index.js
CHANGED
|
@@ -9,5 +9,12 @@ Object.defineProperty(exports, "Controller", {
|
|
|
9
9
|
return _Controller["default"];
|
|
10
10
|
}
|
|
11
11
|
});
|
|
12
|
+
Object.defineProperty(exports, "SocketEvent", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function get() {
|
|
15
|
+
return _SocketEvent["default"];
|
|
16
|
+
}
|
|
17
|
+
});
|
|
12
18
|
var _Controller = _interopRequireDefault(require("./Controller"));
|
|
19
|
+
var _SocketEvent = _interopRequireDefault(require("./SocketEvent"));
|
|
13
20
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; }
|
package/package.json
CHANGED
package/src/Server.js
CHANGED
|
@@ -30,7 +30,7 @@ function compressJson(message) {
|
|
|
30
30
|
}
|
|
31
31
|
|
|
32
32
|
class Server {
|
|
33
|
-
constructor(
|
|
33
|
+
constructor(options = {}, errorCallback = () => {}) {
|
|
34
34
|
this.options = {
|
|
35
35
|
redis: null,
|
|
36
36
|
whiteList: null,
|
|
@@ -54,46 +54,11 @@ class Server {
|
|
|
54
54
|
|
|
55
55
|
this.middlewares = [];
|
|
56
56
|
this.controllers = [];
|
|
57
|
-
|
|
58
|
-
serviceDirs.map((dir) => {
|
|
59
|
-
return this.initController(dir);
|
|
60
|
-
});
|
|
57
|
+
this.socketEvents = [];
|
|
61
58
|
|
|
62
59
|
this.callbackError = errorCallback;
|
|
63
60
|
}
|
|
64
61
|
|
|
65
|
-
addController(name, version, controller) {
|
|
66
|
-
this.controllers.push({
|
|
67
|
-
name,
|
|
68
|
-
version,
|
|
69
|
-
controller,
|
|
70
|
-
});
|
|
71
|
-
return this;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
initController(apiDir) {
|
|
75
|
-
const {excludeList} = this.options;
|
|
76
|
-
|
|
77
|
-
if (fs.existsSync(apiDir)) {
|
|
78
|
-
const controllerDirs = fs.readdirSync(apiDir);
|
|
79
|
-
|
|
80
|
-
for (let i = 0; i < controllerDirs.length; i += 1) {
|
|
81
|
-
const dirName = controllerDirs[i];
|
|
82
|
-
|
|
83
|
-
if (fs.statSync(`${apiDir}/${dirName}`).isDirectory()) {
|
|
84
|
-
const versionDirs = _.differenceWith(fs.readdirSync(`${apiDir}/${dirName}`), excludeList);
|
|
85
|
-
for (let j = 0; j < versionDirs.length; j += 1) {
|
|
86
|
-
const versionName = versionDirs[j];
|
|
87
|
-
// eslint-disable-next-line global-require,import/no-dynamic-require
|
|
88
|
-
const controller = require(`${apiDir}/${dirName}/${versionName}/controller`).default;
|
|
89
|
-
this.addController(dirName, versionName, controller);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
return this;
|
|
95
|
-
}
|
|
96
|
-
|
|
97
62
|
createExpressApp() {
|
|
98
63
|
const {whiteList, systemUser} = this.options;
|
|
99
64
|
|
|
@@ -141,7 +106,43 @@ class Server {
|
|
|
141
106
|
return app;
|
|
142
107
|
}
|
|
143
108
|
|
|
144
|
-
|
|
109
|
+
addController(name, version, controller) {
|
|
110
|
+
this.controllers.push({
|
|
111
|
+
name,
|
|
112
|
+
version,
|
|
113
|
+
controller,
|
|
114
|
+
});
|
|
115
|
+
return this;
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
initController(apiDir) {
|
|
119
|
+
const {excludeList} = this.options;
|
|
120
|
+
|
|
121
|
+
if (fs.existsSync(apiDir)) {
|
|
122
|
+
const controllerDirs = fs.readdirSync(apiDir);
|
|
123
|
+
|
|
124
|
+
for (let i = 0; i < controllerDirs.length; i += 1) {
|
|
125
|
+
const dirName = controllerDirs[i];
|
|
126
|
+
|
|
127
|
+
if (fs.statSync(`${apiDir}/${dirName}`).isDirectory()) {
|
|
128
|
+
const versionDirs = _.differenceWith(fs.readdirSync(`${apiDir}/${dirName}`), excludeList);
|
|
129
|
+
for (let j = 0; j < versionDirs.length; j += 1) {
|
|
130
|
+
const versionName = versionDirs[j];
|
|
131
|
+
// eslint-disable-next-line global-require,import/no-dynamic-require
|
|
132
|
+
const controller = require(`${apiDir}/${dirName}/${versionName}/controller`).default;
|
|
133
|
+
this.addController(dirName, versionName, controller);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
return this;
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
startAPI(port, serviceDirs = []) {
|
|
142
|
+
serviceDirs.map((dir) => {
|
|
143
|
+
return this.initController(dir);
|
|
144
|
+
});
|
|
145
|
+
|
|
145
146
|
if (!_.isEmpty(this.controllers)) {
|
|
146
147
|
const {cookieOption} = this.options;
|
|
147
148
|
const app = this.createExpressApp();
|
|
@@ -284,7 +285,7 @@ class Server {
|
|
|
284
285
|
const {controller} = data;
|
|
285
286
|
const controllerName = data.name;
|
|
286
287
|
const controllerVersion = data.version;
|
|
287
|
-
const listPublicRouter = controller.
|
|
288
|
+
const listPublicRouter = controller.getPublicRouters();
|
|
288
289
|
|
|
289
290
|
_.map(listPublicRouter, (method) => {
|
|
290
291
|
const {name, type} = method;
|
|
@@ -384,8 +385,45 @@ class Server {
|
|
|
384
385
|
throw new Error('No controllers in use API');
|
|
385
386
|
}
|
|
386
387
|
|
|
387
|
-
|
|
388
|
-
|
|
388
|
+
addSocketEvent(name, version, event) {
|
|
389
|
+
this.socketEvents.push({
|
|
390
|
+
name,
|
|
391
|
+
version,
|
|
392
|
+
SocketEvent: event,
|
|
393
|
+
});
|
|
394
|
+
return this;
|
|
395
|
+
}
|
|
396
|
+
|
|
397
|
+
initSocketEvent(socketDir) {
|
|
398
|
+
const {excludeList} = this.options;
|
|
399
|
+
|
|
400
|
+
if (fs.existsSync(socketDir)) {
|
|
401
|
+
const socketDirs = fs.readdirSync(socketDir);
|
|
402
|
+
|
|
403
|
+
for (let i = 0; i < socketDirs.length; i += 1) {
|
|
404
|
+
const dirName = socketDirs[i];
|
|
405
|
+
|
|
406
|
+
if (fs.statSync(`${socketDir}/${dirName}`).isDirectory()) {
|
|
407
|
+
const versionDirs = _.differenceWith(fs.readdirSync(`${socketDir}/${dirName}`), excludeList);
|
|
408
|
+
for (let j = 0; j < versionDirs.length; j += 1) {
|
|
409
|
+
const versionName = versionDirs[j];
|
|
410
|
+
// eslint-disable-next-line global-require
|
|
411
|
+
const event = require(`${socketDir}/${dirName}/${versionName}/controller`).default;
|
|
412
|
+
this.addSocketEvent(dirName, versionName, event);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
}
|
|
416
|
+
}
|
|
417
|
+
return this;
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
startSocket(port, serviceDirs = []) {
|
|
421
|
+
serviceDirs.map((dir) => {
|
|
422
|
+
return this.initSocketEvent(dir);
|
|
423
|
+
});
|
|
424
|
+
|
|
425
|
+
const {socketEvents} = this;
|
|
426
|
+
if (!_.isEmpty(socketEvents)) {
|
|
389
427
|
const httpServer = createServer();
|
|
390
428
|
const app = this.createExpressApp();
|
|
391
429
|
httpServer.on('request', app);
|
|
@@ -393,10 +431,45 @@ class Server {
|
|
|
393
431
|
const io = new SocketIO(httpServer);
|
|
394
432
|
httpServer.listen(port);
|
|
395
433
|
|
|
434
|
+
httpServer.on('listening', () => {
|
|
435
|
+
console.log('listening', `ServerIO start at http://localhost:${httpServer.address().port}`);
|
|
436
|
+
});
|
|
437
|
+
|
|
438
|
+
const eventList = [];
|
|
439
|
+
const msg = [];
|
|
440
|
+
|
|
441
|
+
_.map(socketEvents, (data) => {
|
|
442
|
+
const {SocketEvent} = data;
|
|
443
|
+
const eventName = data.name;
|
|
444
|
+
const eventVersion = data.version;
|
|
445
|
+
const obj = new SocketEvent(io);
|
|
446
|
+
const listPublicEvent = obj.getPublicEvents(io);
|
|
447
|
+
|
|
448
|
+
_.map(listPublicEvent, (method) => {
|
|
449
|
+
const {name, type} = method;
|
|
450
|
+
eventList.push(obj[name]);
|
|
451
|
+
|
|
452
|
+
msg.push({
|
|
453
|
+
name: eventName,
|
|
454
|
+
version: eventVersion,
|
|
455
|
+
type,
|
|
456
|
+
method: name,
|
|
457
|
+
});
|
|
458
|
+
});
|
|
459
|
+
});
|
|
460
|
+
|
|
461
|
+
console.table(msg);
|
|
462
|
+
|
|
463
|
+
io.on('connection', (socket) => {
|
|
464
|
+
_.map(eventList, (func) => {
|
|
465
|
+
func(socket);
|
|
466
|
+
});
|
|
467
|
+
});
|
|
468
|
+
|
|
396
469
|
return io;
|
|
397
470
|
}
|
|
398
471
|
|
|
399
|
-
throw new Error('No
|
|
472
|
+
throw new Error('No events in use SOCKET');
|
|
400
473
|
}
|
|
401
474
|
}
|
|
402
475
|
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
class SocketEvent {
|
|
2
|
+
constructor(io) {
|
|
3
|
+
this.io = io;
|
|
4
|
+
}
|
|
5
|
+
|
|
6
|
+
getPublicEvents() {
|
|
7
|
+
let child = this;
|
|
8
|
+
const result = [];
|
|
9
|
+
|
|
10
|
+
// eslint-disable-next-line no-proto
|
|
11
|
+
while (Object.getPrototypeOf(child.__proto__)) {
|
|
12
|
+
const data = Object.getOwnPropertyNames(Object.getPrototypeOf(child));
|
|
13
|
+
|
|
14
|
+
data.map(function (methodName) {
|
|
15
|
+
const matches = methodName.match(/^(schedule|listen)/);
|
|
16
|
+
if (matches) {
|
|
17
|
+
result.push({
|
|
18
|
+
type: matches[0],
|
|
19
|
+
name: methodName,
|
|
20
|
+
});
|
|
21
|
+
}
|
|
22
|
+
return true;
|
|
23
|
+
});
|
|
24
|
+
// eslint-disable-next-line no-proto
|
|
25
|
+
child = child.__proto__;
|
|
26
|
+
}
|
|
27
|
+
return result;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
export default SocketEvent;
|
package/src/controller/index.js
CHANGED