Media

The sibling that answers 404 to prove it works

Reports and controls what is playing on an Emby server — built on the Jellyfin work, with the small divergences confirmed against real hardware rather than assumed.

homeseermedia servernow playingembynetworksoftwareaudio-videowebsocket

Not in the HomeSeer store yet — running here daily, and heading for the store as a beta.

Emby and Jellyfin share ancestry, so the third media-server plugin ought to have been the easy one. It largely was — but "largely" is doing some work in that sentence, and the differences are the only part worth writing about.

What carried over

The same /socket path. The same SessionsStart "0,1500" subscription. The same frames carrying the full session list, in the same shape as the regular sessions reply, so the same single parser serves both the push feed and the poll.

Confirmed against a real Emby server on 2026-08-21 rather than inferred from the shared history, which is the only reason I would write any of it down.

Where it diverges

Emby's frames carry no message identifier. Jellyfin adds one. Nothing in the plugin reads it, so this changes no behaviour — but it is the kind of difference that turns into an afternoon if a future version starts depending on it silently.

A plain GET on /socket returns 404. Only a full handshake with the upgrade headers proves the path exists at all. Which means the obvious health check — ask for the URL, see if it answers — reports no WebSocket support on a server that supports it perfectly well.

The 2.0-second clamp was measured on Jellyfin and has not been re-timed here. The code says so. It very probably behaves the same way; "very probably" is not the same as measured, and the note exists so nobody later reads a carried-over comment as a fresh observation.

Why the notes matter more than the code

There is not much of a war story in this plugin, and that is a good sign in software and a poor one in a write-up. What it does have is a careful record of exactly which claims were verified here and which were inherited from a sibling.

That distinction is the difference between a suite that shares knowledge and one that shares assumptions — and I have already been bitten this month by a note that was written confidently, propagated to a second repository, and turned out to be wrong.