Comments (5)
+1. I have many widgets on a page. If one widget publishes an event, prior to the second widget being loaded, the 2nd widget will subscribe afterwards and will have "missed" the event.
One solution to this would be "sticky" events as suggested.
The only other solutions I can think of:
- Create an intermediate dependency that both widgets depend on, and which will mediate the pub sub order.
- Ensure that all subscriptions occur before some event (like DomReady) and all publishing occurs after that event (i,e the page is fully loaded so all widgets have had a chance to subscribe to topics)
I think I'll go down the path of 2) whilst this sticky event feature is not available.
from pubsubjs.
Sounds like a queue / csp style for some use cases: a publish (put) waits for a subscriber to act (take). But js-csp and others are not pub-sub, not about broadcasting, - one take removes the message from their channel, so others won't get it.
Broadcast "playback" of message implementations -- the sticky message would need decisions about size and age for a buffer, and how messages should be removed / A login event is stale if there is a logout event after it.
One of the internet-based pub-sub implementatons (PubNub) has a playback, I think.
One easy way to tackle this with the existing PubSub implementation: For state -like use cases (login state) one might use a service (singleton) holding that state for everyone joining in later: the service subscribes and holds the state, others read it directly.
from pubsubjs.
@mikkokam thanks for this. I ended up finding an alternative library that does all I need. It only keeps the "last" message that was published in terms of sticky messages, so it doesn't queue them up, but this is all I need, and is probably less worrying from a perf perspective. https://www.npmjs.com/package/radjs-publish-subscribe
from pubsubjs.
@dazinator seems like a good candidate , thanks for the link!
I've been using the last option of the ones I listed; services as state holders and having them subscribe to 'persistent' messages.
from pubsubjs.
Thank you for your comments and for sharing tips for solutions!
I don't think sticky events is a good feature for PubSubJS. If this is something people really want, then I would suggest that they implement it in a fork. StickyPubSubJS
.
I am closing this issue
from pubsubjs.
Related Issues (20)
- Allow subscribing to multiple topics at once with same callback HOT 1
- Import vs window - unpredictable publishers HOT 5
- countSubscriptions always returns 1 HOT 4
- getSubscriptions wrong result
- use it in react hooks Why are requests repeated HOT 3
- PubSub does not work under Context API HOT 4
- Add "files" field in package.json HOT 1
- PubSub keep using the initial state value in .subscribe() - ReactJS HOT 4
- Any tests examples approach on this library? (with React) HOT 2
- Add the possibility to await sync events (publishAwait) HOT 3
- I can't subscribe event while publish any topic, in different controller
- Rename "PubSub" variable for multiple instances HOT 1
- Feature wanted - RegExp HOT 1
- clearSubscriptions would clear different topics which includes the same string
- ReadMe points to wrong jsdelivr package HOT 5
- Publish Latest value HOT 2
- Wildcard support for subscriptions? HOT 2
- Troubleshooting event subscription not working in a React component HOT 1
- not working on k8s HOT 1
- Support for Topic Pattern Matching in Subscriptions
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from pubsubjs.