Skip to content

Commit

Permalink
Update P2PTrackerClient to handle Safari and WKWebView
Browse files Browse the repository at this point in the history
  • Loading branch information
DimaDemchenko committed Aug 9, 2024
1 parent 0d7c32a commit 59d721b
Showing 1 changed file with 9 additions and 3 deletions.
12 changes: 9 additions & 3 deletions packages/p2p-media-loader-core/src/p2p/tracker-client.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,8 +26,14 @@ type P2PTrackerClientEventHandlers = {
onSegmentsAnnouncement: () => void;
};

function isSafariBrowser() {
return /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
function isSafariOrWkWebview() {
const isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
const isWkWebview =
/\b(iPad|iPhone|Macintosh).*AppleWebKit(?!.*Safari)/i.test(
navigator.userAgent,
);

return isSafari || isWkWebview;
}

export class P2PTrackerClient {
Expand All @@ -51,7 +57,7 @@ export class P2PTrackerClient {
this.client = new TrackerClient({
infoHash: utf8ToUintArray(streamHash),
peerId: utf8ToUintArray(peerId),
announce: isSafariBrowser()
announce: isSafariOrWkWebview()
? config.announceTrackers.slice(0, 1) // Safari has issues with multiple trackers
: config.announceTrackers,
rtcConfig: this.config.rtcConfig,
Expand Down

0 comments on commit 59d721b

Please sign in to comment.