@bbb-mobile/windows-host
v0.1.0
Published
The native host of the BigBlueButton meeting SDK on react-native-windows: WebRTC for react-native-windows (the native module and video view that @livekit/react-native-webrtc's JavaScript expects, on a prebuilt libwebrtc), LiveKit's audio session module, a
Maintainers
Readme
@bbb-mobile/windows-host
The native host of the BigBlueButton meeting SDK (@bbb-mobile/bigbluebutton-mobile-sdk) on
react-native-windows 0.83 and later (new
architecture). It is what lets the SDK's native meeting client, the same client as on Android, iOS
and macOS, run on Windows:
- WebRTC for react-native-windows.
WebRTCModuleand theRTCVideoViewcomponent implement the native side of@livekit/react-native-webrtc(the LiveKit fork of react-native-webrtc) under the same names, methods, events and payloads, so the library's JavaScript, and LiveKit's React Native layer on top of it, run unchanged. The media stack is a prebuilt libwebrtc (the C++ wrapper the flutter-webrtc desktop ports use, MIT): onelibwebrtc.dllper architecture that the build downloads from the pinned GitHub release the first time (BbbFetchLibWebRtcin the project). Peer connections, SDP and ICE, cameras and microphones, device selection, screen capture (getDisplayMedia, the primary screen), data channels, transceivers and RTP parameters (simulcast),getStats. Not available: frame encryption (the end-to-end encryption API rejects), and the iOS audio device module methods answer with defaults. LivekitReactNativeModule, LiveKit's audio session module: no-ops on Windows, with the audio outputs listed from libwebrtc's playout devices (getAudioOutputs,selectAudioOutput).BbbWindowsHost, the host services the SDK's Windows adapter variants call: synchronous key-value storage (%LOCALAPPDATA%\<app>\BbbWindowsHost), the file open and save dialogs, a text file reader, keep-awake, the clipboard, andregisterFont(uri, family)for the SDK's icon font: react-native-windows renders only installed fonts (DirectWrite's system collection), so the file is installed for the current user (%LOCALAPPDATA%\Microsoft\Windows\Fontsand its value underHKCU\Software\Microsoft\Windows NT\CurrentVersion\Fonts, no elevation) on the first meeting; Settings > Personalization > Fonts lists it as "BigBlueButton", and removing it there undoes it.isScreenReaderRunning()reads the system's screen reader flag (react-native-windows' own check is true whenever any UI Automation client listens), andstartWindowMetrics()keeps React Native'sDimensionsin step with the app window (it subclasses the window and sendsdidUpdateDimensionson every resize).
Published with the SDK; npm install @bbb-mobile/bigbluebutton-mobile-sdk brings it in, and
npx react-native autolink-windows (run by run-windows too) links windows/BbbWindowsHost into
the app's solution. The SDK picks the native client on Windows when this module is linked and the
html5 client in WebView2 (@bbb-mobile/meeting-webview) when it is not. The guide is the SDK's
react-native/README.md, section 3.
Requirements
Windows 10 or 11 on x64 or ARM64 (libwebrtc has no 32-bit build), the Visual Studio toolchain
react-native-windows 0.83 asks for, and network access on the first build (the libwebrtc archive,
about 9 MB). The app's capabilities: a camera and a microphone are used through libwebrtc's own
device modules, no manifest capability is required for an unpackaged app; a packaged (MSIX) app
declares webcam and microphone.
Layout
src/ RTCVideoView (codegenNativeComponent spec) and isWindowsHostAvailable()
windows/BbbWindowsHost/ the C++ library: WebRtcCore (libwebrtc state, serialization),
WebRTCModule, RTCVideoView, LivekitModule, HostModule, codegen/
windows/libwebrtc/ the downloaded libwebrtc (not committed)npm run codegen regenerates windows/BbbWindowsHost/codegen from src/*NativeComponent.ts;
the output is committed so that a consuming app's build needs no codegen step for this package.
