Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/lh0x00/hypersubs
an upgraded version of Meteor subscribe, which helps optimize data and performance!
https://github.com/lh0x00/hypersubs
ddp ddp-client hacks meteor meteor-package meteorjs publications subscribe subscriptions
Last synced: 4 months ago
JSON representation
an upgraded version of Meteor subscribe, which helps optimize data and performance!
- Host: GitHub
- URL: https://github.com/lh0x00/hypersubs
- Owner: lh0x00
- License: mit
- Created: 2018-12-13T12:23:40.000Z (about 6 years ago)
- Default Branch: master
- Last Pushed: 2021-10-10T07:46:41.000Z (over 3 years ago)
- Last Synced: 2024-09-30T05:20:30.031Z (4 months ago)
- Topics: ddp, ddp-client, hacks, meteor, meteor-package, meteorjs, publications, subscribe, subscriptions
- Language: JavaScript
- Homepage: https://atmospherejs.com/lamhieu/hypersubs
- Size: 22.5 KB
- Stars: 15
- Watchers: 1
- Forks: 2
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
# Hypersubs
[![github issues][github-issues-image]][github-issues-url]
[![build status][travis-image]][github-project-url]An upgraded version of Meteor subscribe, which helps optimize data and performance!
## Why hypersubs?
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!## Installation
read more in [atmospherejs](https://atmospherejs.com/lamhieu/hypersubs)
```bash
$ meteor add lamhieu:hypersubs
```All the rest of the packages are automatically made for you, no need to change anything in your source code!
[github-project-url]: https://github.com/lamhieu-vk/hypersubs
[travis-image]: https://travis-ci.com/lamhieu-vk/hypersubs.svg?branch=master
[github-issues-image]: https://img.shields.io/github/issues/lamhieu-vk/hypersubs.svg
[github-issues-url]: https://github.com/lamhieu-vk/hypersubs/issues## How it work?
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!
### For example:
#### default
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!**
#### with hpersubs
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!**
### Options
Default options:
```javascript
const options = {
isOverride: true, // is override original Meteor.subscribe
}
```#### How to config options?
Default, you can use **hypersubs** without config but you want custom config you can do this
```javascript
import { config } from 'meteor/lamhieu:hypersubs';// if you don't want override original Meteor.subscribe
config.isOverride = false;
```### Usage
#### Meteor
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`
#### DDP
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`.
#### Check
To check a connection is wrapped by **hypersubs**
```javascript
// 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
}
```