浏览器最小化时通过串口传输数据

beh*_*zbc 6 html javascript serial-port rxjs typescript

我想在我的网络应用程序中使用网络序列。我遇到的一个问题是,当用户更改或最小化浏览器时,发送和接收数据的计时器停止。我测试了 Web Worker 并得到了这个问题
,我该如何解决这个问题,我的代码是这样的并使用rxjs 计时器

      //user give access to serial port
     const port = await navigator.serial.requestPort();
 
     await port.open({ baudRate: 9600 });

     const textDecoder = new TextDecoderStream();
     const readableStreamClosed = port.readable.pipeTo(textDecoder.writable);
     const reader = textDecoder.readable.getReader();
     const textEncoder = new TextEncoderStream();
     const writableStreamClosed = textEncoder.readable.pipeTo(port.writable);
     const writer = textEncoder.writable.getWriter();

     timer(40, 100).subscribe(async (c) => {
        await writer.write("{Config:1,0,0,0,0,0,0,0,0,0}");
        console.log((await reader.read()).value);
     });
Run Code Online (Sandbox Code Playgroud)

更新我使用setInterval但不起作用我的代码是这样的

    const textDecoder = new TextDecoderStream();
    const readableStreamClosed = this.port.readable.pipeTo(textDecoder.writable);
    this.reader = textDecoder.readable.getReader();
    const textEncoder = new TextEncoderStream();
    const writableStreamClosed = textEncoder.readable.pipeTo(this.port.writable);
    this.writer = textEncoder.writable.getWriter();

    setInterval( async () => {
      await this.writer.write("{Config:1,0,0,0,0,0,0,0,0,0}");
      console.log((await this.reader.read().value);
    },100);
Run Code Online (Sandbox Code Playgroud)