IMAGE WebSocket Channel Loader @ vrch.ai
Read the image a WebSocket viewer is showing, placeholder included
- default_image
- IMAGE
- IS_DEFAULT_IMAGE
The WebSocket side of the ComfyUI Web Viewer pack is the branch built for sending images over a persistent connection rather than pulling them over plain HTTP - useful when the viewer and the generator aren't on the same box, or when you want a dedicated socket for realtime display. The IMAGE WebSocket Channel Loader is the read side of that channel: it grabs the image currently displayed on a WebSocket viewer channel and hands it to your graph as a normal IMAGE.
What it is
It's the WebSocket sibling of the IMAGE Web Viewer Channel Loader, so if you've used that one the pattern is familiar. Pick a channel (1–8) that matches a WebSocket viewer node, give it the server address those viewer nodes use (the default 172.17.0.2:8001 is another Docker dev leftover - set it to wherever your WebSocket server actually runs, typically 127.0.0.1:8001 on the same machine), and the loader outputs what that channel is currently showing. The IMAGE output is the main event; there's also IS_DEFAULT_IMAGE, a boolean that tells you when you're looking at a placeholder rather than a real frame.
The placeholder setting is where this node gets its personality. When a channel has no real image yet - connection not up, first frame not delivered - the loader emits a placeholder instead of nothing, and you pick what it looks like: black, white, grey, or image. The image option uses the optional default_image input, so you can park a logo or a title card on the display until the real feed arrives. Because realtime pipelines live or die on "there is always a frame," this is a small but meaningful quality-of-life detail.
It's a terminal-but-not-terminal node in the same way the other loaders are: it outputs, and it's flagged as an output node in the schema, but you'll wire its IMAGE downstream - into a saver, a fallback, a sampler, whatever needs the current frame. The IS_DEFAULT_IMAGE output is genuinely useful for logic: when it's true, you might want to skip processing or show a loading state instead of wasting compute on a placeholder.
How to install
Install is the pack-standard path:
cd ComfyUI/custom_nodes
git clone https://github.com/VrchStudio/comfyui-web-viewer
cd comfyui-web-viewer
pip install -r requirements.txt
restart ComfyUI. Manager users search "ComfyUI Web Viewer". Windows portable: python_embeded\python.exe -m pip install -r ComfyUI\custom_nodes\comfyui-web-viewer\requirements.txt. No models to download.
Common issues
The gotcha to remember: the server address has to match what the viewer nodes use, or the loader reads a dead channel and sits on its placeholder forever. If IS_DEFAULT_IMAGE stays true, check the address first, then the channel number, then confirm the WebSocket viewer has actually displayed something. Get those three in sync and this becomes a reliable tap into whatever's on your WebSocket display.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| channel | COMBO | 1 | 8 options: 1, 2, 3, 4, 5, 6, +2 |
| server | STRING | 172.17.0.2:8001 | — |
| placeholder | COMBO | black | 4 options: black, white, grey, image |
| debug | BOOLEAN | false | — |
| default_imageopt | IMAGE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| IMAGE | IMAGE | — |
| IS_DEFAULT_IMAGE | BOOLEAN | — |