AudioCaptureModule.cs 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using System.Runtime.InteropServices.JavaScript;
  2. using System.Runtime.Versioning;
  3. namespace SimpleWebChat.BlazorWasm.Modules
  4. {
  5. [SupportedOSPlatform("browser")]
  6. public static partial class AudioCaptureModule
  7. {
  8. public static Action OnInit;
  9. public static Action<byte[]> ChunkArrive;
  10. private static JSObject _jsModule;
  11. public static async Task<bool> Init()
  12. {
  13. _jsModule ??= await JSHost.ImportAsync("AudioCaptureModule", $"{GlobalModule.BasePath ?? "/"}audio-capture-module.js");
  14. return await JsInit();
  15. }
  16. public static async Task Start() => await JsStart();
  17. public static async Task Stop() => await JsStop();
  18. [JSImport("init", "AudioCaptureModule")]
  19. private static partial Task<bool> JsInit();
  20. [JSImport("start", "AudioCaptureModule")]
  21. private static partial Task JsStart();
  22. [JSImport("stop", "AudioCaptureModule")]
  23. private static partial Task JsStop();
  24. [JSExport]
  25. private static void JsFeedChunk(byte[] chunk)
  26. {
  27. Console.WriteLine("chunk");
  28. if (ChunkArrive != null) ChunkArrive(chunk);
  29. }
  30. [JSExport]
  31. private static void JsInitCallBack(bool value)
  32. {
  33. if (OnInit != null) OnInit();
  34. }
  35. }
  36. }