Coder Social home page Coder Social logo

Comments (5)

dazinator avatar dazinator commented on June 10, 2024

+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:

  1. Create an intermediate dependency that both widgets depend on, and which will mediate the pub sub order.
  2. 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.

mikkokam avatar mikkokam commented on June 10, 2024

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.

dazinator avatar dazinator commented on June 10, 2024

@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.

mikkokam avatar mikkokam commented on June 10, 2024

@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.

mroderick avatar mroderick commented on June 10, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.