paullouisageneau / datachannel-wasm

C++ WebRTC Data Channels and WebSockets for WebAssembly in browsers
MIT License
148 stars 25 forks source link

Close RTCPeerConnection objects before deleting #47

Closed golgirihm closed 8 months ago

golgirihm commented 8 months ago

This helps the Chromium garbage collection system clean up resources. If we don't do this, and we create and destroy too many instances, we get this error: Uncaught DOMException: Failed to construct 'RTCPeerConnection': Cannot create so many PeerConnections

Note that there is a separate bug with Chromium that has existed for 5+ years. The bug is that garbage collection does not get triggered at all for lots of deleted RTCPeerConnections: https://bugs.chromium.org/p/chromium/issues/detail?id=825576

People have worked around this Chromium bug using queueMicrotask(). That correctly works around the issue, but only if the RTCPeerConnection was closed before deleting.