@resolveio/server-lib 4.6.19 → 5.0.0-rc-2
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.
|
@@ -5,7 +5,7 @@ export declare class SubscriptionManager {
|
|
|
5
5
|
private _publications;
|
|
6
6
|
private _subscriptions;
|
|
7
7
|
private _wss;
|
|
8
|
-
private
|
|
8
|
+
private _subCache;
|
|
9
9
|
private _sendQueue;
|
|
10
10
|
private _runningQueue;
|
|
11
11
|
private serverConfig;
|
|
@@ -18,7 +18,6 @@ export declare class SubscriptionManager {
|
|
|
18
18
|
private getPublicationCollections;
|
|
19
19
|
private tailOpLog;
|
|
20
20
|
private tailOpLogSupport;
|
|
21
|
-
private runOpLogQueue;
|
|
22
21
|
private resendPubsForDelete;
|
|
23
22
|
private checkPubsForChanges;
|
|
24
23
|
private checkSupportPubsForChanges;
|
|
@@ -51,7 +51,6 @@ var method_responses_1 = require("../publications/method-responses");
|
|
|
51
51
|
var support_tickets_1 = require("../publications/support-tickets");
|
|
52
52
|
var index_1 = require("../index");
|
|
53
53
|
var notifications_1 = require("../publications/notifications");
|
|
54
|
-
var common_1 = require("../util/common");
|
|
55
54
|
var billing_logged_in_users_collection_1 = require("../collections/billing-logged-in-users.collection");
|
|
56
55
|
var moment = require("moment");
|
|
57
56
|
var billing_logged_in_users_1 = require("../publications/billing-logged-in-users");
|
|
@@ -61,7 +60,7 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
61
60
|
var _this = this;
|
|
62
61
|
this._publications = {};
|
|
63
62
|
this._subscriptions = [];
|
|
64
|
-
this.
|
|
63
|
+
this._subCache = [];
|
|
65
64
|
this._sendQueue = [];
|
|
66
65
|
this._runningQueue = false;
|
|
67
66
|
this._mainServer = mainServer;
|
|
@@ -81,7 +80,6 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
81
80
|
notifications_1.loadNotificationPublications(this);
|
|
82
81
|
report_builder_reports_1.loadReportBuilderReportPublications(this);
|
|
83
82
|
this.tailOpLog();
|
|
84
|
-
this.runOpLogQueue();
|
|
85
83
|
if (index_1.ResolveIOServer.getSupportDB()) {
|
|
86
84
|
support_tickets_1.loadSupportTicketPublications(this);
|
|
87
85
|
this.tailOpLogSupport();
|
|
@@ -411,11 +409,7 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
411
409
|
_this._mainServer.getMethodManager().callMethodInternal('sendSupportTicketEmail', doc.o._id);
|
|
412
410
|
}
|
|
413
411
|
if (!collection.endsWith('.versions') && !collection.startsWith('system.')) {
|
|
414
|
-
_this.
|
|
415
|
-
type: 'insert',
|
|
416
|
-
collection: collection,
|
|
417
|
-
doc: doc.o
|
|
418
|
-
});
|
|
412
|
+
_this.checkPubsForChanges(collection, doc.o, 'insert');
|
|
419
413
|
}
|
|
420
414
|
});
|
|
421
415
|
oplog.on('update', function (doc) {
|
|
@@ -429,11 +423,7 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
429
423
|
_this._mainServer.getCronManager().checkCronJobsForUpdates();
|
|
430
424
|
}
|
|
431
425
|
if (!collection.endsWith('.versions') && !collection.startsWith('system.')) {
|
|
432
|
-
_this.
|
|
433
|
-
type: 'update',
|
|
434
|
-
collection: collection,
|
|
435
|
-
doc: doc.o
|
|
436
|
-
});
|
|
426
|
+
_this.checkPubsForChanges(collection, doc.o, 'update');
|
|
437
427
|
}
|
|
438
428
|
});
|
|
439
429
|
oplog.on('delete', function (doc) {
|
|
@@ -506,174 +496,6 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
506
496
|
console.log('oplog stopped support');
|
|
507
497
|
});
|
|
508
498
|
};
|
|
509
|
-
SubscriptionManager.prototype.runOpLogQueue = function () {
|
|
510
|
-
var _this = this;
|
|
511
|
-
var that = this;
|
|
512
|
-
setInterval(function () { return __awaiter(_this, void 0, void 0, function () {
|
|
513
|
-
var uniqueOplog_1, uniquePubs, needIds_1, _loop_3, i, _loop_4, i, i, oplog, _loop_5, j, state_1;
|
|
514
|
-
var _this = this;
|
|
515
|
-
return __generator(this, function (_a) {
|
|
516
|
-
switch (_a.label) {
|
|
517
|
-
case 0:
|
|
518
|
-
if (!this._oplogQueue.length) return [3 /*break*/, 11];
|
|
519
|
-
uniqueOplog_1 = common_1.deepCopy(this._oplogQueue);
|
|
520
|
-
this._oplogQueue = [];
|
|
521
|
-
uniquePubs = [];
|
|
522
|
-
needIds_1 = {};
|
|
523
|
-
_loop_3 = function (i) {
|
|
524
|
-
if (!that._subscriptions.some(function (a) { return a.collections.includes(uniqueOplog_1[i].collection); })) {
|
|
525
|
-
uniqueOplog_1.splice(i, 1);
|
|
526
|
-
}
|
|
527
|
-
};
|
|
528
|
-
for (i = uniqueOplog_1.length - 1; i >= 0; i--) {
|
|
529
|
-
_loop_3(i);
|
|
530
|
-
}
|
|
531
|
-
uniqueOplog_1.forEach(function (oplog) {
|
|
532
|
-
var schemaErrors = null;
|
|
533
|
-
try {
|
|
534
|
-
index_1.ResolveIOServer.getMainDB().model(oplog.collection)['simplschema'].validate(oplog.doc);
|
|
535
|
-
}
|
|
536
|
-
catch (errors) {
|
|
537
|
-
schemaErrors = errors;
|
|
538
|
-
}
|
|
539
|
-
if (schemaErrors) {
|
|
540
|
-
if (!needIds_1[oplog.collection]) {
|
|
541
|
-
needIds_1[oplog.collection] = [oplog.doc['_id']];
|
|
542
|
-
}
|
|
543
|
-
else {
|
|
544
|
-
if (!needIds_1[oplog.collection].filter(function (a) { return a === oplog.doc['_id']; })[0]) {
|
|
545
|
-
needIds_1[oplog.collection].push(oplog.doc['_id']);
|
|
546
|
-
}
|
|
547
|
-
}
|
|
548
|
-
}
|
|
549
|
-
});
|
|
550
|
-
_loop_4 = function (i) {
|
|
551
|
-
var collection, docs;
|
|
552
|
-
return __generator(this, function (_a) {
|
|
553
|
-
switch (_a.label) {
|
|
554
|
-
case 0:
|
|
555
|
-
collection = Object.keys(needIds_1)[i];
|
|
556
|
-
return [4 /*yield*/, index_1.ResolveIOServer.getMainDB().model(collection).find({ _id: { $in: needIds_1[collection] } })];
|
|
557
|
-
case 1:
|
|
558
|
-
docs = _a.sent();
|
|
559
|
-
needIds_1[collection].forEach(function (id_doc) {
|
|
560
|
-
if (uniqueOplog_1.filter(function (a) { return a.doc && a.doc._id === id_doc; })[0]) {
|
|
561
|
-
uniqueOplog_1.filter(function (a) { return a.doc && a.doc._id === id_doc; })[0].doc = docs.filter(function (a) { return a._id === id_doc; })[0];
|
|
562
|
-
}
|
|
563
|
-
else {
|
|
564
|
-
console.log('PROBLEMAAAAAAAA');
|
|
565
|
-
}
|
|
566
|
-
});
|
|
567
|
-
return [2 /*return*/];
|
|
568
|
-
}
|
|
569
|
-
});
|
|
570
|
-
};
|
|
571
|
-
i = 0;
|
|
572
|
-
_a.label = 1;
|
|
573
|
-
case 1:
|
|
574
|
-
if (!(i < Object.keys(needIds_1).length)) return [3 /*break*/, 4];
|
|
575
|
-
return [5 /*yield**/, _loop_4(i)];
|
|
576
|
-
case 2:
|
|
577
|
-
_a.sent();
|
|
578
|
-
_a.label = 3;
|
|
579
|
-
case 3:
|
|
580
|
-
i++;
|
|
581
|
-
return [3 /*break*/, 1];
|
|
582
|
-
case 4:
|
|
583
|
-
i = uniqueOplog_1.length - 1;
|
|
584
|
-
_a.label = 5;
|
|
585
|
-
case 5:
|
|
586
|
-
if (!(i >= 0)) return [3 /*break*/, 10];
|
|
587
|
-
oplog = uniqueOplog_1[i];
|
|
588
|
-
_loop_5 = function (j) {
|
|
589
|
-
var _a, sub, _b;
|
|
590
|
-
return __generator(this, function (_c) {
|
|
591
|
-
switch (_c.label) {
|
|
592
|
-
case 0:
|
|
593
|
-
sub = that._subscriptions[j];
|
|
594
|
-
if (!sub.collections.includes(oplog.collection)) return [3 /*break*/, 3];
|
|
595
|
-
if (sub.preSubscriptionData) {
|
|
596
|
-
if (that._publications[sub.publication].fetchFunction(oplog.doc, sub.preSubscriptionData)) {
|
|
597
|
-
if (!uniquePubs.filter(function (a) { return a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData); }).length) {
|
|
598
|
-
sub['oplog'] = oplog;
|
|
599
|
-
uniquePubs.push(sub);
|
|
600
|
-
}
|
|
601
|
-
else {
|
|
602
|
-
uniqueOplog_1.splice(i, 1);
|
|
603
|
-
}
|
|
604
|
-
return [2 /*return*/, "break"];
|
|
605
|
-
}
|
|
606
|
-
}
|
|
607
|
-
if (!that._publications[sub.publication].preFunction) return [3 /*break*/, 2];
|
|
608
|
-
_b = sub;
|
|
609
|
-
return [4 /*yield*/, that._publications[sub.publication].preFunction(sub.subscriptionData)];
|
|
610
|
-
case 1:
|
|
611
|
-
_b.preSubscriptionData = _c.sent();
|
|
612
|
-
if (that._publications[sub.publication].fetchFunction(oplog.doc, sub.preSubscriptionData)) {
|
|
613
|
-
if (!uniquePubs.filter(function (a) { return a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData); }).length) {
|
|
614
|
-
sub['oplog'] = oplog;
|
|
615
|
-
uniquePubs.push(sub);
|
|
616
|
-
}
|
|
617
|
-
else {
|
|
618
|
-
uniqueOplog_1.splice(i, 1);
|
|
619
|
-
}
|
|
620
|
-
return [2 /*return*/, "break"];
|
|
621
|
-
}
|
|
622
|
-
return [3 /*break*/, 3];
|
|
623
|
-
case 2:
|
|
624
|
-
if (that._publications[sub.publication].fetchFunction) {
|
|
625
|
-
if ((_a = that._publications[sub.publication]).fetchFunction.apply(_a, [oplog.doc].concat(sub.subscriptionData))) {
|
|
626
|
-
if (!uniquePubs.filter(function (a) { return a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData); }).length) {
|
|
627
|
-
sub['oplog'] = oplog;
|
|
628
|
-
uniquePubs.push(sub);
|
|
629
|
-
}
|
|
630
|
-
else {
|
|
631
|
-
uniqueOplog_1.splice(i, 1);
|
|
632
|
-
}
|
|
633
|
-
return [2 /*return*/, "break"];
|
|
634
|
-
}
|
|
635
|
-
}
|
|
636
|
-
else {
|
|
637
|
-
if (!uniquePubs.filter(function (a) { return a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData); }).length) {
|
|
638
|
-
sub['oplog'] = oplog;
|
|
639
|
-
uniquePubs.push(sub);
|
|
640
|
-
}
|
|
641
|
-
else {
|
|
642
|
-
uniqueOplog_1.splice(i, 1);
|
|
643
|
-
}
|
|
644
|
-
return [2 /*return*/, "break"];
|
|
645
|
-
}
|
|
646
|
-
_c.label = 3;
|
|
647
|
-
case 3: return [2 /*return*/];
|
|
648
|
-
}
|
|
649
|
-
});
|
|
650
|
-
};
|
|
651
|
-
j = 0;
|
|
652
|
-
_a.label = 6;
|
|
653
|
-
case 6:
|
|
654
|
-
if (!(j < that._subscriptions.length)) return [3 /*break*/, 9];
|
|
655
|
-
return [5 /*yield**/, _loop_5(j)];
|
|
656
|
-
case 7:
|
|
657
|
-
state_1 = _a.sent();
|
|
658
|
-
if (state_1 === "break")
|
|
659
|
-
return [3 /*break*/, 9];
|
|
660
|
-
_a.label = 8;
|
|
661
|
-
case 8:
|
|
662
|
-
j++;
|
|
663
|
-
return [3 /*break*/, 6];
|
|
664
|
-
case 9:
|
|
665
|
-
i--;
|
|
666
|
-
return [3 /*break*/, 5];
|
|
667
|
-
case 10:
|
|
668
|
-
uniquePubs.forEach(function (pub) {
|
|
669
|
-
_this.checkPubsForChanges(pub['oplog'].collection, pub['oplog'].doc, pub['oplog'].type);
|
|
670
|
-
});
|
|
671
|
-
_a.label = 11;
|
|
672
|
-
case 11: return [2 /*return*/];
|
|
673
|
-
}
|
|
674
|
-
});
|
|
675
|
-
}); }, 500);
|
|
676
|
-
};
|
|
677
499
|
SubscriptionManager.prototype.resendPubsForDelete = function (collection) {
|
|
678
500
|
var that = this;
|
|
679
501
|
that._subscriptions.filter(function (a) { return a.collections.includes(collection); }).forEach(function (sub) {
|
|
@@ -696,36 +518,55 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
696
518
|
// Check to see if any pubs need to refetch due to Mongo operation
|
|
697
519
|
SubscriptionManager.prototype.checkPubsForChanges = function (collection, document, type) {
|
|
698
520
|
return __awaiter(this, void 0, void 0, function () {
|
|
699
|
-
var that,
|
|
521
|
+
var that, _loop_3, this_1, i;
|
|
700
522
|
return __generator(this, function (_a) {
|
|
701
523
|
switch (_a.label) {
|
|
702
524
|
case 0:
|
|
703
525
|
that = this;
|
|
704
|
-
|
|
705
|
-
var _a, _b, sub, _c, _d;
|
|
526
|
+
_loop_3 = function (i) {
|
|
527
|
+
var _a, _b, schemaErrors, sub, _c, _d;
|
|
706
528
|
return __generator(this, function (_e) {
|
|
707
529
|
switch (_e.label) {
|
|
708
530
|
case 0:
|
|
531
|
+
schemaErrors = null;
|
|
532
|
+
try {
|
|
533
|
+
index_1.ResolveIOServer.getMainDB().model(collection)['simplschema'].validate(document);
|
|
534
|
+
}
|
|
535
|
+
catch (errors) {
|
|
536
|
+
schemaErrors = errors;
|
|
537
|
+
}
|
|
538
|
+
if (!schemaErrors) return [3 /*break*/, 2];
|
|
539
|
+
return [4 /*yield*/, index_1.ResolveIOServer.getMainDB().model(collection).findById(document['_id'])];
|
|
540
|
+
case 1:
|
|
541
|
+
document = _e.sent();
|
|
542
|
+
_e.label = 2;
|
|
543
|
+
case 2:
|
|
709
544
|
sub = that._subscriptions.filter(function (a) { return a.collections.includes(collection); })[i];
|
|
710
|
-
if (!sub.preSubscriptionData) return [3 /*break*/,
|
|
711
|
-
if (!that._publications[sub.publication].fetchFunction(document, sub.preSubscriptionData)) return [3 /*break*/,
|
|
545
|
+
if (!sub.preSubscriptionData) return [3 /*break*/, 4];
|
|
546
|
+
if (!that._publications[sub.publication].fetchFunction(document, sub.preSubscriptionData)) return [3 /*break*/, 4];
|
|
547
|
+
if (this_1._subCache.some(function (a) { return a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData); })) {
|
|
548
|
+
this_1._subCache.splice(this_1._subCache.findIndex(function (a) { return a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData); }), 1);
|
|
549
|
+
}
|
|
712
550
|
that.sendPubData(sub, type, collection);
|
|
713
551
|
_c = sub;
|
|
714
552
|
return [4 /*yield*/, (_a = that._publications[sub.publication]).preFunction.apply(_a, sub.subscriptionData)];
|
|
715
|
-
case
|
|
553
|
+
case 3:
|
|
716
554
|
_c.preSubscriptionData = _e.sent();
|
|
717
555
|
return [2 /*return*/, "continue"];
|
|
718
|
-
case
|
|
719
|
-
if (!that._publications[sub.publication].preFunction) return [3 /*break*/,
|
|
556
|
+
case 4:
|
|
557
|
+
if (!that._publications[sub.publication].preFunction) return [3 /*break*/, 6];
|
|
720
558
|
_d = sub;
|
|
721
559
|
return [4 /*yield*/, that._publications[sub.publication].preFunction(sub.subscriptionData)];
|
|
722
|
-
case
|
|
560
|
+
case 5:
|
|
723
561
|
_d.preSubscriptionData = _e.sent();
|
|
724
562
|
if (that._publications[sub.publication].fetchFunction(document, sub.preSubscriptionData)) {
|
|
563
|
+
if (this_1._subCache.some(function (a) { return a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData); })) {
|
|
564
|
+
this_1._subCache.splice(this_1._subCache.findIndex(function (a) { return a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData); }), 1);
|
|
565
|
+
}
|
|
725
566
|
that.sendPubData(sub, type, collection);
|
|
726
567
|
}
|
|
727
|
-
return [3 /*break*/,
|
|
728
|
-
case
|
|
568
|
+
return [3 /*break*/, 7];
|
|
569
|
+
case 6:
|
|
729
570
|
if (that._publications[sub.publication].ws_specific) {
|
|
730
571
|
sub.clients.forEach(function (client) {
|
|
731
572
|
var _a;
|
|
@@ -750,24 +591,31 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
750
591
|
else {
|
|
751
592
|
if (that._publications[sub.publication].fetchFunction) {
|
|
752
593
|
if ((_b = that._publications[sub.publication]).fetchFunction.apply(_b, [document].concat(sub.subscriptionData))) {
|
|
594
|
+
if (this_1._subCache.some(function (a) { return a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData); })) {
|
|
595
|
+
this_1._subCache.splice(this_1._subCache.findIndex(function (a) { return a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData); }), 1);
|
|
596
|
+
}
|
|
753
597
|
that.sendPubData(sub, type, collection);
|
|
754
598
|
}
|
|
755
599
|
// else
|
|
756
600
|
}
|
|
757
601
|
else {
|
|
602
|
+
if (this_1._subCache.some(function (a) { return a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData); })) {
|
|
603
|
+
this_1._subCache.splice(this_1._subCache.findIndex(function (a) { return a.publication === sub.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(sub.subscriptionData); }), 1);
|
|
604
|
+
}
|
|
758
605
|
that.sendPubData(sub, type, collection);
|
|
759
606
|
}
|
|
760
607
|
}
|
|
761
|
-
_e.label =
|
|
762
|
-
case
|
|
608
|
+
_e.label = 7;
|
|
609
|
+
case 7: return [2 /*return*/];
|
|
763
610
|
}
|
|
764
611
|
});
|
|
765
612
|
};
|
|
613
|
+
this_1 = this;
|
|
766
614
|
i = 0;
|
|
767
615
|
_a.label = 1;
|
|
768
616
|
case 1:
|
|
769
617
|
if (!(i < that._subscriptions.filter(function (a) { return a.collections.includes(collection); }).length)) return [3 /*break*/, 4];
|
|
770
|
-
return [5 /*yield**/,
|
|
618
|
+
return [5 /*yield**/, _loop_3(i)];
|
|
771
619
|
case 2:
|
|
772
620
|
_a.sent();
|
|
773
621
|
_a.label = 3;
|
|
@@ -859,31 +707,40 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
859
707
|
// Fetch pub once, send to all clients linked to this pub
|
|
860
708
|
SubscriptionManager.prototype.sendPubDataOnce = function (ws, messageId, subscription, type, collection) {
|
|
861
709
|
return __awaiter(this, void 0, void 0, function () {
|
|
862
|
-
var _a, _b, that;
|
|
710
|
+
var _a, _b, that, serverRes;
|
|
863
711
|
var _this = this;
|
|
864
712
|
return __generator(this, function (_c) {
|
|
865
713
|
that = this;
|
|
866
|
-
if (subscription.publication !== 'superadminAPM' && subscription.publication !== 'loggedInUsers') {
|
|
867
|
-
that._mainServer.getMethodManager().callMethodInternal('insertSubscriptionLog', type, subscription.publication, collection, JSON.stringify(subscription.subscriptionData));
|
|
868
|
-
}
|
|
869
714
|
if (!that._publications[subscription.publication].ws_specific) { // Same pub for all users
|
|
870
|
-
(
|
|
871
|
-
|
|
715
|
+
if (this._subCache.some(function (a) { return a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData); })) {
|
|
716
|
+
serverRes = {
|
|
872
717
|
messageId: messageId,
|
|
873
718
|
hasError: false,
|
|
874
|
-
data: res
|
|
719
|
+
data: this._subCache.filter(function (a) { return a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData); })[0].res
|
|
875
720
|
};
|
|
876
|
-
|
|
877
|
-
|
|
878
|
-
|
|
879
|
-
|
|
880
|
-
|
|
881
|
-
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
885
|
-
|
|
886
|
-
|
|
721
|
+
this.sendWS(ws, serverRes);
|
|
722
|
+
}
|
|
723
|
+
else {
|
|
724
|
+
if (subscription.publication !== 'superadminAPM' && subscription.publication !== 'loggedInUsers') {
|
|
725
|
+
that._mainServer.getMethodManager().callMethodInternal('insertSubscriptionLog', type, subscription.publication, collection, JSON.stringify(subscription.subscriptionData));
|
|
726
|
+
}
|
|
727
|
+
(_a = that._publications[subscription.publication].function).call.apply(_a, [Object.assign({}, that, SubscriptionManager.prototype)].concat(subscription.subscriptionData)).then(function (res) {
|
|
728
|
+
_this._subCache.push({ publication: subscription.publication, subscriptionData: subscription.subscriptionData, res: res });
|
|
729
|
+
var serverRes = {
|
|
730
|
+
messageId: messageId,
|
|
731
|
+
hasError: false,
|
|
732
|
+
data: res
|
|
733
|
+
};
|
|
734
|
+
_this.sendWS(ws, serverRes);
|
|
735
|
+
}, function (err) {
|
|
736
|
+
var serverRes = {
|
|
737
|
+
messageId: messageId,
|
|
738
|
+
hasError: true,
|
|
739
|
+
data: err
|
|
740
|
+
};
|
|
741
|
+
_this.sendWS(ws, serverRes);
|
|
742
|
+
});
|
|
743
|
+
}
|
|
887
744
|
}
|
|
888
745
|
else { // Pub is different for each user (Look at users publication) [MUCH SLOWER, RE-RUNS FOR EACH USER]
|
|
889
746
|
(_b = that._publications[subscription.publication].function).call.apply(_b, [Object.assign({}, that, SubscriptionManager.prototype), ws['id_user']].concat(subscription.subscriptionData)).then(function (res) {
|
|
@@ -915,36 +772,53 @@ var SubscriptionManager = /** @class */ (function () {
|
|
|
915
772
|
var _this = this;
|
|
916
773
|
return __generator(this, function (_b) {
|
|
917
774
|
that = this;
|
|
918
|
-
if (
|
|
919
|
-
that._mainServer.getMethodManager().callMethodInternal('insertSubscriptionLog', type, subscription.publication, collection, JSON.stringify(subscription.subscriptionData));
|
|
920
|
-
}
|
|
921
|
-
(_a = that._publications[subscription.publication].function).call.apply(_a, [Object.assign({}, that, SubscriptionManager.prototype)].concat(subscription.subscriptionData)).then(function (res) {
|
|
775
|
+
if (this._subCache.some(function (a) { return a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData); })) {
|
|
922
776
|
subscription.clients.forEach(function (client) {
|
|
923
777
|
that._wss.clients.forEach(function (ws) {
|
|
924
778
|
if (ws['id_socket'] === client.id_socket) {
|
|
925
779
|
var serverRes = {
|
|
926
780
|
messageId: client.messageId,
|
|
927
781
|
hasError: false,
|
|
928
|
-
data: res
|
|
782
|
+
data: _this._subCache.filter(function (a) { return a.publication === subscription.publication && JSON.stringify(a.subscriptionData) === JSON.stringify(subscription.subscriptionData); })[0].res
|
|
929
783
|
};
|
|
930
784
|
_this.sendWS(ws, serverRes);
|
|
931
785
|
}
|
|
932
786
|
});
|
|
933
787
|
});
|
|
934
|
-
}
|
|
935
|
-
|
|
936
|
-
|
|
937
|
-
|
|
938
|
-
|
|
939
|
-
|
|
940
|
-
|
|
941
|
-
|
|
942
|
-
|
|
943
|
-
|
|
944
|
-
|
|
788
|
+
}
|
|
789
|
+
else {
|
|
790
|
+
if (subscription.publication !== 'superadminAPM' && subscription.publication !== 'loggedInUsers') {
|
|
791
|
+
that._mainServer.getMethodManager().callMethodInternal('insertSubscriptionLog', type, subscription.publication, collection, JSON.stringify(subscription.subscriptionData));
|
|
792
|
+
}
|
|
793
|
+
(_a = that._publications[subscription.publication].function).call.apply(_a, [Object.assign({}, that, SubscriptionManager.prototype)].concat(subscription.subscriptionData)).then(function (res) {
|
|
794
|
+
_this._subCache.push({ publication: subscription.publication, subscriptionData: subscription.subscriptionData, res: res });
|
|
795
|
+
subscription.clients.forEach(function (client) {
|
|
796
|
+
that._wss.clients.forEach(function (ws) {
|
|
797
|
+
if (ws['id_socket'] === client.id_socket) {
|
|
798
|
+
var serverRes = {
|
|
799
|
+
messageId: client.messageId,
|
|
800
|
+
hasError: false,
|
|
801
|
+
data: res
|
|
802
|
+
};
|
|
803
|
+
_this.sendWS(ws, serverRes);
|
|
804
|
+
}
|
|
805
|
+
});
|
|
806
|
+
});
|
|
807
|
+
}, function (err) {
|
|
808
|
+
subscription.clients.forEach(function (client) {
|
|
809
|
+
that._wss.clients.forEach(function (ws) {
|
|
810
|
+
if (ws['id_socket'] === client.id_socket) {
|
|
811
|
+
var serverRes = {
|
|
812
|
+
messageId: client.messageId,
|
|
813
|
+
hasError: true,
|
|
814
|
+
data: err
|
|
815
|
+
};
|
|
816
|
+
_this.sendWS(ws, serverRes);
|
|
817
|
+
}
|
|
818
|
+
});
|
|
945
819
|
});
|
|
946
820
|
});
|
|
947
|
-
}
|
|
821
|
+
}
|
|
948
822
|
return [2 /*return*/];
|
|
949
823
|
});
|
|
950
824
|
});
|