-
-
Notifications
You must be signed in to change notification settings - Fork 90
Message Caching
One issue with the design uibuilder uses is that, when someone loads a new instance of the front-end, it won't receive any previous messages. This is especially problematic for dashboards. This happens when a user reloads a page as well, all of the dynamic data is lost.
In addition the front-end page is not always ready (or even loaded) when messages are already being received by the node instance.
To combat these issues, we need to somehow cache incoming messages and play them forwards to any new client (or one that is reloaded).
You can either handle this manually or better still, use the companion node node-red-contrib-infocache. Simply send the control messages from the uibuilder instance to the input of an infocache node and it will resend all cached messages back to the individual client when the client is ready to deal with them.
By default, this will happen when the window.load event fires. But if you are using a front-end library like Riot, Vue, etc. you can override this by setting uibuilder.autoSendReady(false)
and then use uibuilder.sendCtrl({'type':'ready for content', 'cache-control':'REPLAY'})
when your app is ready for content (e.g. perhaps at the end of the app.mounted
event).
Please feel free to add comments to the page (clearly mark with your initials & please add a commit msg so we know what has changed). You can contact me in the Discourse forum, or raise an issue here in GitHub! I will make sure all comments & suggestions are represented here.
-
Walkthrough 🔗 Getting started
-
In Progress and To Do 🔗 What's coming up for uibuilder?
-
Awesome uibuilder Examples, tutorials, templates and references.
-
How To
- How to send data when a client connects or reloads the page
- Send messages to a specific client
- Cache & Replay Messages
- Cache without a helper node
- Use webpack to optimise front-end libraries and code
- How to contribute & coding standards
- How to use NGINX as a proxy for Node-RED
- How to manage packages manually
- How to upload a file from the browser to Node-RED
-
Vanilla HTML/JavaScript examples
-
VueJS general hints, tips and examples
- Load Vue (v2 or v3) components without a build step (modern browsers only)
- How to use webpack with VueJS (or other frameworks)
- Awesome VueJS - Tips, info & libraries for working with Vue
- Components that work
-
VueJS v3 hints, tips and examples
-
VueJS v2 hints, tips and examples
- Dynamically load .vue files without a build step (Vue v2)
- Really Simple Example (Quote of the Day)
- Example charts using Chartkick, Chart.js, Google
- Example Gauge using vue-svg-gauge
- Example charts using ApexCharts
- Example chart using Vue-ECharts
- Example: debug messages using uibuilder & Vue
- Example: knob/gauge widget for uibuilder & Vue
- Example: Embedded video player using VideoJS
- Simple Button Acknowledgement Example Thanks to ringmybell
- Using Vue-Router without a build step Thanks to AFelix
- Vue Canvas Knob Component Thanks to Klaus Zerbe
-
Examples for other frameworks (check version before trying)
- Basic jQuery example - Updated for uibuilder v6.1
- ReactJS with no build - updated for uibuilder v5/6
-
Examples for other frameworks (may not work, out-of-date)
-
Outdated Pages (Historic only)
- v1 Examples (these need updating to uibuilder v2/v3/v4/v5)