feat: v1.7.0 part 1#226
Conversation
| while (x.ConnectionState == VcConnectionState.Connected) | ||
| { | ||
| sw.SpinOnce(); | ||
| await Task.Delay(100); |
There was a problem hiding this comment.
Long timeout but whatever IG.
There was a problem hiding this comment.
Kept it at 100ms intentionally to replace the previous spin wait with a cheap async wait while still allowing the background service to exit shortly after disconnect. This is not a connection timeout, just the service lifetime polling interval.
|
|
||
| private void ConfigureDataChannel(WebRtcSession session, RTCDataChannel dataChannel) | ||
| { | ||
| session.DataChannel = dataChannel; |
There was a problem hiding this comment.
Not exactly sure if WebRTC data channels can handle audio data streaming/packets through data channels as efficiently as its official streaming method.
|
Commit 87ae5c6 is just tests from my local branch. It will be removed, pushed by mistake |
1266e6f to
bd67984
Compare
Scope this change to the browser WebRTC transport path only. - send numeric signaling message types expected by the server serializer - keep the browser data channel reliable/ordered for login and control packets - surface WebRTC close reasons and deny responses to the browser client instead of timing out - fix WebRTC server capacity handling so the first client is not rejected and login failures return a deny response Audio data transport and broader performance work are intentionally left out for a follow-up.
|
Update pushed for review: Scope is intentionally limited to the browser WebRTC transport path:
Audio data transport and broader performance changes were left out and should be handled separately. Validation:
|
Remove encoded audio bytes from McApiOnEntityAudioReceivedPacket. The McApi audio-received event now carries only entity id, timestamp, and frame loudness again. The actual audio payload remains out of McApi event transport for this part and can be handled through a separate channel later.
|
Follow-up pushed: This removes encoded audio bytes from Validation:
|
Make server cards open explicitly instead of relying on ListBox selection state, which fixes browser clicks that were swallowed by item content and edit/delete buttons. Implement WebRTC ping over the existing data channel path and teach the server to answer info requests for WebRTC sessions, while preserving the UDP unconnected info response behavior for LiteNet. Serialize browser WebRTC connect and ping attempts so the periodic ping path cannot close the active JS peer connection while a user connect is starting. Normalize browser WebAudio ScriptProcessor frame sizes to browser-supported powers of two and run the capture/playback loops directly on the WASM async loop instead of Task.Run. Queue remote ICE candidates until the answer is applied, demote rejected candidates to warnings, and guard WebRTC server session closing against recursive close callbacks. Audio encoding is now created lazily so ping and navigation do not initialize Opus. Full browser audio work remains intentionally deferred until OpusSharp fixes its browser static native linkage; after that we can continue the audio pipeline work without app-side OpusSharp.Natives or custom wasm linking hacks.
|
Pushed a follow-up commit with browser WebRTC fixes: 258fede ( What changed:
Current boundary:
|
…ing commands from a listbox.
|
Updated in What changed:
Deployment note: during testing, signaling on The local test package source was removed before committing; this commit uses the normal Checked locally: server build, browser build, Core tests, Network tests, and Client tests. |
|
Updated in This fixes the MacOS/iOS publish failures from CI:
|
Summary
This PR is the first part of the VoiceCraft 1.7.0 update.
It brings the browser/WebRTC transport work into the current codebase, wires it into the server transport layer, updates browser client support, and includes a few cleanup/follow-up fixes found during the port.