Feature/tci rig bridge plugin wsjtx multicast#700
Merged
accius merged 2 commits intoaccius:Stagingfrom Mar 9, 2026
Merged
Conversation
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Enables the WSJT-X relay to join a UDP multicast group so multiple
applications on the same machine or LAN can receive WSJT-X packets
simultaneously, rather than competing for a single unicast socket.
Changes:
- core/config.js: Add three new defaults to DEFAULT_CONFIG.wsjtxRelay:
multicast (bool, default false), multicastGroup ('224.0.0.1'),
multicastInterface ('' = OS picks NIC). Deep-merge in loadConfig()
picks these up automatically with no structural changes.
- plugins/wsjtx-relay.js:
· Derive mcEnabled / mcGroup / mcInterface constants at create() time
· In the 'listening' handler, call socket.addMembership() after bind
completes (the only valid moment per the Node.js dgram API).
Wrapped in try/catch — failure logs a clear error and degrades
gracefully to unicast; the plugin keeps running.
· In disconnect(), call socket.dropMembership() before socket.close()
to cleanly release the IGMP membership. Failure is non-fatal and
logged but does not block socket teardown.
· getStatus() now exposes multicast and multicastGroup for the
status API and any future UI status display.
- core/server.js (Integrations tab UI):
· Multicast checkbox with onchange toggle handler
· Collapsible wsjtxMulticastOpts div containing Multicast Group and
Multicast Interface text inputs, shown only when checkbox is checked
· populateIntegrations() populates all three new fields on load
· saveIntegrations() collects and POSTs the new values; the existing
POST /api/config handler merges and restarts the plugin automatically
- rig-bridge-config.example.json: Add multicast, multicastGroup,
multicastInterface fields (all at their default/off values)
- README.md: Extend wsjtxRelay config JSON example and field table with
the three new options; add 'Multicast Mode' subsection explaining when
and how to use it (WSJT-X UDP server change, multicastInterface for
multi-homed systems, link-local scope note); add troubleshooting row.
Feature is strictly opt-in (multicast: false by default) — zero impact
on existing unicast configurations.
Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
11 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
What does this PR do?
Add UDP multicast support to WSJT-X relay + update docs
Summary
multicast: falseby default). Allows rig-bridge and other applications to receive WSJT-X packets simultaneously by joining group224.0.0.1. Falls back gracefully to unicast on error. Configurable via web UI orrig-bridge-config.json.Test plan
multicast: falsemulticast: true, point WSJT-X UDP server to224.0.0.1, confirm decodes arrivemulticastInterfaceto a specific NIC IP, confirm correct interface usedType of change
Checklist
server.js: caches have TTLs and size caps (we serve 2,000+ concurrent users)var(--accent-cyan), etc.).bak,.old,console.logdebug lines, or test scripts includedImplements multicast to wsjtx plugin like introduced by #686 into server.js