An upgraded version of Meteor subscribe, which helps optimize data and performance!
This is the overwritten version of Meteor subscribe. It optimizes performance by not create connect sent to the server when it is not needed.
Hypersubs only creates one connection for multiple subscriptions when detected it is duplicate (same publication name and params). Hypersubs only make a real connection (for the first time call Meteor.subscribe
), since the second times call Meteor.subscribe
, they will be optimized reuse the connection is existed!
read more in atmospherejs
$ meteor add lamhieu:hypersubs
All the rest of the packages are automatically made for you, no need to change anything in your source code!
On the page, every time you call Meteor.subscribe
, the system will create a subscription
and start its workflow, it will send the request to the server, and get back in the message returned from the server. When you call Meteor.subscribe
with the same arguments and names in multiple locations, the system creates separate connections, so there is a need for unnecessary connections!
At element A, we call Meteor.subscribe('getData', '_id')
and somewhere in the page (many other elements) also call Meteor.subscribe('getData', '_id')
each time you call to it the system thing will create a server communication connection! things are not re-used!
At immortality A, we call Meteor.subscribe('getData', '_id')
and somewhere in the page, even if you recall something like that, we only created one communication line with the server. and it is re-used! The server you are working less, the speed of subscribe feedback is returned immediately!
Default options:
const options = {
isOverride: true, // is override original Meteor.subscribe
}
Default, you can use hypersubs without config but you want custom config you can do this
import { config } from 'meteor/lamhieu:hypersubs';
// if you don't want override original Meteor.subscribe
config.isOverride = false;
Default hypersubs is add to Meteor variable, you can use by call Meteor.hyperSubscribe
like Meteor.subscribe
!
If set isOverride: true
you don't need change any code in your source because Meteor.subscribe
will replace by Meteor.hyperSubscribe
, and you can call original susbcribe by call Meteor.originalSubscribe
If set isOverride: false
when you want use hypersubs you need call Meteor.hyperSubscribe
Default when if set isOverride: true
when you call DDP.connect(url)
to create new connection, it will return a connection wrapped by hypersubs (called by hyperConnection
), DD.subscribe
inside DDP
is a hyperSusbcribe
.
To check a connection is wrapped by hypersubs
// DDP
const ddp = DDP.connect(url);
if (ddp.isHyperConnection) {
// is hyperConnection
}
// Meteor
const subscribe = Meteor.subscribe; // or DDP.subscribe
if (subscribe.isHyperSubscribe) {
// is hyperSubscribe
}
// Handle
const handle = Meteor.subscribe('publicationName', 'test'); // or
const handle = Meteor.hyperSubscribe('publicationName', 'test');
if (handle.isHyperHandle) {
// is hyperHandle
}