IMAGE WebSocket Web Viewer @ vrch.ai
The lean WebSocket viewer — display images, let a settings node do the rest
- images
- IMAGES
- URL
Every viewer node in this pack ends up being "put the image in a browser," and the IMAGE WebSocket Simple Web Viewer is the stripped-down version of that idea for the WebSocket branch. It takes images, pushes them over the socket to the server you point it at, and pops a browser window showing them. No blend modes, no loop controls, no background color - those moved out to the IMAGE WebSocket Settings node. This one stays deliberately dumb, which is exactly what makes it the right default for new WebSocket workflows.
What it is
The essentials: images in, channel (1–8) to tag the display, and server for the WebSocket address - default 172.17.0.2:8001, the pack's usual Docker dev leftover that you'll change to wherever your server actually runs. format picks PNG or JPEG for the wire (JPEG is the default and the sensible one for realtime; PNG when you need lossless). The pacing knobs are the ones you'll touch: number_of_images (default 1) for how many frames the viewer juggles, image_display_duration (default 1000 ms) for how long each shows, and fade_anim_duration (default 200 ms) for the crossfade.
The window behavior is inherited from the whole viewer family: window_width and window_height (defaults 1280×960) size the popup, show_url reveals the viewer's address so you can open it on a phone or second device, dev_mode turns on the debugging harness, and debug logs what's happening. extra_params and url are escape hatches for advanced config. Two outputs: IMAGES passes your input straight through (handy for chaining), and URL gives you the viewer address as a string.
Why the simple split works: the legacy all-in-one WebSocket viewer crammed every behavior knob onto the display node itself, which made each node a wall of settings. The new architecture puts the behavior in the IMAGE WebSocket Settings node - channel, server, blend modes, loop, background, filters - and leaves this node clean. You pick the simple viewer when you want the lean path: wire images in, point it at the server, get a display. Add the settings node only when you need the fancy behavior.
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 gotchas are the WebSocket-family ones. If the window opens but nothing shows, check that server points at a running WebSocket server and that it matches whatever the receiving side expects - a dead address just means a silent empty display. If you pair it with the settings node, keep channel and server identical on both, or the settings never reach the display. Nail those two and this is the lowest-friction way to put realtime output in a browser over a socket.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| images | IMAGE | — | |
| channel | COMBO | 1 | 8 options: 1, 2, 3, 4, 5, 6, +2 |
| server | STRING | 172.17.0.2:8001 | — |
| format | COMBO | JPEG | 2 options: PNG, JPEG |
| number_of_images | INT | 11–99 | — |
| image_display_duration | INT | 10001–10000 | — |
| fade_anim_duration | INT | 2001–10000 | — |
| window_width | INT | 1280100–10240 | — |
| window_height | INT | 960100–10240 | — |
| show_url | BOOLEAN | false | — |
| dev_mode | BOOLEAN | false | — |
| debug | BOOLEAN | false | — |
| extra_params | STRING | — | |
| url | STRING | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| IMAGES | IMAGE | — |
| URL | STRING | — |