Live channels
Some Apps push updates to the browser instead of waiting for someone to reload: an orders board that fills in as orders land, a queue that shrinks as colleagues work it. Pages can also send messages back to the App over the same connection, so a comment typed in one browser reaches every other one without a page load. The Channels tab shows which of those live channels the App declares, how many browsers are connected to each one right now, how much is flowing in each direction, and whether anything is being turned away.
Why it exists
A live feature fails quietly. The page still renders, the numbers just stop moving, and nobody files a ticket until the figures are hours stale. This tab is where you find out first: connected browsers by channel, how many updates went out in the last hour, how many messages came back in, and how many were refused or throttled.
Reading the tab
Eight counters run across the top:
| Counter | What it counts |
|---|---|
| Live subscribers | Browsers connected to this App's channels right now, across every Informer server. |
| Broadcasts · 60m | Updates the App sent in the last hour. |
| Deliveries · 60m | Individual browsers those updates reached. One broadcast to 40 subscribers is 40 deliveries. |
| Rate-limited · 60m | Updates the App tried to send over its allowance, and lost. Anything above zero is worth a look. |
| Joins · 30d | Subscriptions the App's own gate accepted. |
| Refusals · 30d | Subscriptions it turned away. |
| Leaves · 30d | Subscriptions that ended. |
| Sends · 30d | Messages browsers sent back to the App, whether or not the App's handler succeeded. |
Under them, Declared channels lists what the App shipped. Source says where each channel comes from: Relay means informer.yaml declares it and the App's own events are echoed to it, Handler means a file decides who may join (and receives what browsers send), and Relay + handler means both. Roles shows the roles a subscriber needs, Join timeout how long the App's gate is allowed to take, and Live how many browsers are on that channel now.
Limits at the bottom is the server's ceiling, not the App's: subscribers per App, channels per socket, frame size, broadcast rate, inbound rate (how fast one person may send messages back to the App, or ask it to replay recent updates after reconnecting), replay buffer (how many recent updates the server keeps so a browser that drops and reconnects can catch up, and for how long), and join timeout. An administrator sets these for the whole Informer server; an App cannot raise them.
When the counters show a dash
The live figures come from the server's shared cache. If it cannot be reached, the counters show a dash instead of a number, with a note saying so. That is deliberate: a row of zeros would look exactly like a quiet App, and "nothing is happening" and "I cannot see" are very different answers. Everything else on the tab (the channels, their roles, the limits) is still current.
Live channels need origin mode
The tab warns Live channels need this server's origin mode when Apps are served from the Informer address rather than their own. Browsers cannot open a live connection in that setup, so nothing subscribes and every counter stays at zero. It is a server-wide setting; your Informer administrator changes it, and nothing in the App can work around it.
Live channels are switched off
The tab warns Live channels are switched off on this server when an Informer administrator has disabled App Channels in the server configuration. Nothing can subscribe and every broadcast is dropped until it is turned back on. The channels and handlers the App declares are still listed, so you can see what would take effect. Like origin mode, it is a server-wide setting that nothing in the App can work around.
Refusals, rate limits, and the Logs tab
The counters tell you that something was refused; the Logs tab tells you why. Rows from channels carry a channel source chip and are grouped one per problem per minute, so a bad afternoon reads as a handful of lines rather than thousands:
- 14 broadcasts rate-limited on "ticker" in the last minute: the App is sending faster than its allowance.
- 3 joins refused for a missing role: people are opening a page whose channel needs a role they do not have. Check Sharing.
- 2 subscriptions refused at the app subscriber cap: more browsers than Subscribers per app allows.
- 5 relays dropped on "orders": the App emitted an event that could not be echoed to its channel.
- 7 inbound messages rate-limited on "chat": one person is sending messages back to the App faster than Inbound rate allows. Their browser is told to slow down; nothing else is affected.
- 2 inbound handlers failed on "chat": a message reached the App and the App's own code failed on it. An App problem; the author can read the details in the same Logs tab.
- 1 joined handler failed: a browser was admitted, but the App's follow-up (announcing the arrival, for instance) failed. The subscription stands.
- 4 wildcard subscriptions refused: a handler gates channels under the prefix: a page asked to listen to a whole family of channels while the App restricts one of them. Expected behavior, not a fault.
Troubleshooting
- Live subscribers is 0 but people have the App open. Check for a switched-off or origin-mode warning first. After that, the App's pages may simply not subscribe to anything, which is normal for an App with no live features.
- Rate-limited is climbing. The App is broadcasting faster than the server allows, and those updates are gone. It is an App change, not a setting you can raise: the author needs to send fewer, larger updates. Send them the App Channels guide.
- Refusals climbing with joins flat. Nobody is getting in. The Logs tab distinguishes a missing role (a Sharing problem) from a gate the App itself is rejecting (an App problem).
- Sends is climbing but nothing seems to happen. Messages are reaching the App. If the Logs tab shows inbound handlers failed, the App's own code is failing on them and the author needs the details there; if it shows nothing, the App is handling them and the effect is somewhere you are not looking.
- A channel has subscribers but is not in the list. An App can broadcast to a channel it never declared. The counters include it; the table only lists what the App declared.
- The tab says the App doesn't declare any channels. It has no live features, or its author has not deployed them yet. The counters above still report anything actually happening.