const cacheName = "ashes";
const cacheFiles = ["index.html", "webtorrent.min.js", "test.css", "register.js"];
self.addEventListener("install", (e) => {
console.log("[Service Worker] Install");
e.waitUntil(
(async () => {
const keys = await caches.keys();
console.log(keys);
if (keys.includes(cacheName)) {
return;
}
const cache = await caches.open(cacheName);
console.log("[Service Worker] Caching all: app shell and content");
await cache.addAll(cacheFiles);
})()
);
const sourceFiles = new blob(JSON.stringify(dataObj))
export const createTorrent = async (sourceFiles) => {
const isMultiFiles = sourceFiles.length > 1;
const listItem = await new Promise<CustomStruct>((res, rej) => {
client.seed(
sourceFiles,
{
//辅助打洞服务
announce: ["udp://ip:port", "ws://ip:port", "http://ip:port", "http://ip:port/announce"],
},
(torrent) => {
const { files, magnetURI, name, infoHash, torrentFileBlobURL } = torrent;
const type = isMultiFiles ? "hybrid" : sourceFiles[0].type;
const names = isMultiFiles ? files.map(({ name }) => name).join(" | ") : name;
res({
name: names,
magnetURI,
id: infoHash,
fileUrl: torrentFileBlobURL,
lastModified: Date.now(),
type,
});
}
);
client.on("error", (err) => rej(err));
});
return listItem;
};