Novage / p2p-media-loader

An open-source engine for P2P streaming of live and on demand video directly in a web browser HTML page
https://novage.com.ua/p2p-media-loader/demo.html
Apache License 2.0
1.4k stars 310 forks source link

Feat: setup http request callback #344

Closed DimaDemchenko closed 5 months ago

DimaDemchenko commented 5 months ago

Code below works fine. it loads video 10/10 times

httpRequestSetup: async (
      url: string,
      segmentByteRange: ByteRange | undefined,
      requestByteRange: { start: number; end?: number } | undefined,
    ) => {
      await new Promise((resolve) => {
        setTimeout(resolve, 1500);
      });

      const headers = new Headers(
        requestByteRange
          ? {
              Range: `bytes=${requestByteRange.start}-${
                requestByteRange.end ?? ""
              }`,
            }
          : undefined,
      );

      return new Request(url, {
        headers,
      });
    },

The implementation of func below works weird. It works only if time in settimeout is less than 1000. It might be due to httpNotReceivingBytesTimeoutMs: 1000, because when i change it to 2000, code works fine even with settimeout with 1500 ms.

httpRequestSetup: async (
      url: string,
      segmentByteRange: ByteRange | undefined,
      requestByteRange: { start: number; end?: number } | undefined,
    ) => {
      await new Promise((resolve) => {
        setTimeout(resolve, 1000);
      });

      return null;
    },