Skip to content

ENG-2985: WebRTC Phase 0 - Update publisher and playback examples#64

Draft
felipeMoran-wowza wants to merge 112 commits intomasterfrom
feature/ENG-2985-update-publisher-and-playback-examples
Draft

ENG-2985: WebRTC Phase 0 - Update publisher and playback examples#64
felipeMoran-wowza wants to merge 112 commits intomasterfrom
feature/ENG-2985-update-publisher-and-playback-examples

Conversation

@felipeMoran-wowza
Copy link
Copy Markdown

@felipeMoran-wowza felipeMoran-wowza commented Apr 30, 2026

Summary

This PR bundles all the work to adapt the WebRTC client examples to the new WebRTC reimplementation in Wowza Streaming Engine. The legacy examples are kept untouched but moved to v1/, and the new ones live in v2/, React-only (the jQuery variant was discontinued for the new version).

Repo reorganization

Key differences between v1 and v2

Signaling protocol. In v1, messages were a single nested payload with direction, command, streamInfo, sdp, and userData. v2 flattens and formalizes this: every message declares a messageType (OFFER / CANDIDATE) and an action (PUBLISH / VIEW), and the stream fields (applicationName, streamName, connectionId) live at the root. The status field in responses moved from status to statusCode.

ICE trickle. In v1, iceCandidates were bundled with the SDP in the server response. v2 implements real trickle ICE: candidates are sent as they're gathered in standalone CANDIDATE messages, with a queue (pendingCandidates) holding them until the server returns the connectionId so they can be associated. Same on the receive side for server-side candidates.

Configurable RTCPeerConnection. In v1, the peer connection was created with a bare new RTCPeerConnection() and no config. v2 accepts STUN and TURN servers configurable from the UI (IceServersUtils.js), with support for multiple comma-separated URLs and TURN credentials.

No more SDP munging. v1 had to hand-edit the SDP to force bitrates and codecs (v1/.../mungeSDP.js). That file is gone in v2: negotiation runs directly on the SDP the browser produces.

WHIP / WHEP. Added support for WHIP (publish) and WHEP (playback) as alternatives to WebSocket signaling, with trickle ICE over PATCH application/trickle-ice-sdpfrag (see startPublishWhip and startPlayWhep).

Other v2 tweaks.

  • Centralized validation in ValidationUtils.js.
  • Better error handling in publish/play (includes retries with backoff for 504/514 from the repeater).
  • A fresh WebSocket is created for every play session (the old one was reused and caused issues on stop+play).
  • Cookies to persist publish form values.
  • Composite and Meeting tabs temporarily commented out from the nav until they're ready on the new server.

Included tickets

  • ENG-3354 — signaling command updates.
  • ENG-3388 — ICE trickle support.
  • ENG-3209 / ENG-3210 — WHIP / WHEP.
  • ENG-3387 — error handling, validation, and stop/play fixes.
  • ENG-3486 — webrtcImplementation flag changes from modern to v2.
  • ENG-3488 — final v1/v2 folder split.
  • ENG-3531 — STUN harvester.
  • ENG-3537 — fix for empty connectionId on candidates.
  • ENG-3527 — hide Composite/Meeting tabs.
  • ENG-3580 — configurable STUN/TURN fields in the forms.

ismaelPintos-wowza and others added 30 commits February 4, 2026 12:18
…vigation-on-development

ENG-3206 Fix navigation on development
…p-name-parameter-for-feature-flag

ENG-3113: Added appName param in url for FeatureFlag
…' into feature/ENG-3207-add-support-for-whip-selection
…-react-play-page

ENG-3225: Update React play page
…' into feature/ENG-3207-add-support-for-whip-selection
…pport-for-whip-selection

ENG-3207: Add support for whip selection
…' into feature/ENG-3262-update-react-publish-page
…-react-publish-page

ENG-3262 Update react publish page
…pport-for-whep-selection

ENG-3208: Add support for WHEP selection
felipeMoran-wowza and others added 28 commits March 18, 2026 10:47
…_the_webrtImplementation_flag_value_from_modern_to_v2

Change parameter from modern to v2
…e-publish-play-error-handling

ENG-3387: Improve publish play error handling
…ew-examples-to-new-folder

ENG-3488: Generate new project structure
…' into feature/ENG-3537-fix-connection-id-empty
…un-harvester

ENG-3531: Add stun harvester
…nnection-id-empty

ENG-3537: Fix connectionId empty on ice candidates
…_Composite_and_meeting_tabs_while_they_are_not_implemented

ENG-3527 Remove Composite and meeting tabs while they are not implemented
…un-configuration-field

ENG-3580: Add STUN and TURN configuration fields
…ikved sdp m cleanup when changing input devices
…different-mobile-cameras

ENG-3855: Fix changing cameras in mobile and desktop
@felipeMoran-wowza felipeMoran-wowza marked this pull request as ready for review April 30, 2026 16:39
@felipeMoran-wowza felipeMoran-wowza marked this pull request as draft April 30, 2026 16:39
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Development

Successfully merging this pull request may close these issues.

4 participants