index.js 2.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. // const decoderWorker = new Worker("./worker/decoderWorker.js");
  2. import { decodeMessage } from "./decodeMessage.js";
  3. var worker = `
  4. const Events = {
  5. DecodeMessage: 0,
  6. UpdateStats: 1,
  7. WASMReady: 2,
  8. CacheFrame: 3,
  9. RecordVideo: 4,
  10. OnlyEmitSignal: 5,
  11. WASMReadyCost: 6,
  12. PanoramaMessage: 7,
  13. RequestIFrame: 8,
  14. ConsoleLog: 9,
  15. ConsoleError: 10,
  16. };
  17. const printConsole = {
  18. log: (msg) => self.postMessage({ event: Events.ConsoleLog, printMsg: msg }),
  19. error: (msg, code) =>
  20. self.postMessage({ event: Events.ConsoleError, printMsg: msg, code: code }),
  21. };
  22. class Decoder {
  23. constructor() {}
  24. loadWASM(url) {
  25. printConsole.log("Load WASM from " + String(url));
  26. try {
  27. self.importScripts(url);
  28. } catch (e) {
  29. printConsole.error(e.message, "5003");
  30. }
  31. }
  32. }
  33. if ("function" === typeof importScripts) {
  34. printConsole.log("22222");
  35. }
  36. self.decoder = new Decoder();
  37. self.onmessage = (event) => {
  38. switch (event.data.event) {
  39. case 0:
  40. self.postMessage({});
  41. break;
  42. case 9:
  43. self.decoder.loadWASM(event.data.url);
  44. printConsole.log("loadWASM");
  45. default:
  46. break;
  47. }
  48. };
  49. `;
  50. // const decoderWorker = new Worker('./decoderWorker.js"');
  51. const webworkBlob = new Blob([worker], {
  52. type: "application/javascript",
  53. });
  54. const decoderWorker = new Worker(URL.createObjectURL(webworkBlob));
  55. const workEvents = {
  56. DecodeMessage: 0,
  57. UpdateStats: 1,
  58. WASMReady: 2,
  59. CacheFrame: 3,
  60. RecordVideo: 4,
  61. OnlyEmitSignal: 5,
  62. WASMReadyCost: 6,
  63. PanoramaMessage: 7,
  64. RequestIFrame: 8,
  65. ConsoleLog: 9,
  66. ConsoleError: 10,
  67. };
  68. decoderWorker.postMessage({
  69. event: 9,
  70. url: "https://static.xverse.cn/wasm/v15/lib_ff264dec_no_idb_with_wasm_tbundle.js?tbundle=tmeland_base",
  71. jitterLength: 0,
  72. });
  73. console.log("decoderWorker", decoderWorker);
  74. decoderWorker.onmessage = (event) => {
  75. // console.log("Message received from worker", event);
  76. switch (event.data.event) {
  77. case workEvents.decodeMessage:
  78. decodeMessage(event);
  79. break;
  80. case workEvents.ConsoleLog:
  81. console.log(event.data.printMsg);
  82. break;
  83. case workEvents.ConsoleError:
  84. console.error(event.data.code);
  85. break;
  86. }
  87. };
  88. decoderWorker.onerror = (event) => {
  89. console.log("event", event);
  90. };