You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome扩展Service Worker中WebTorrent无法做种问题求助

问题解决:Chrome扩展Manifest V3中WebTorrent无法做种

核心原因

Chrome扩展Manifest V3的Service Worker存在网络权限限制和生命周期限制,同时WebTorrent默认配置在扩展环境中可能无法正常建立P2P连接,导致做种功能失效。

解决方案步骤

1. 更新Manifest权限配置

修改manifest.json,添加必要的网络权限,确保WebTorrent能访问tracker和对等节点:

{
    "manifest_version": 3,
    "name": "Testing",
    "version": "1.0",
    "background": {
        "service_worker": "background.js"
    },
    "host_permissions": ["*://*/*"],
    "permissions": ["storage"]
}
  • host_permissions: ["*://*/*"]:允许扩展发起任意域名的网络请求,包括tracker服务器和对等节点的连接。
  • permissions: ["storage"]:可选,用于持久化Torrent数据,避免Service Worker重启后丢失状态。

2. 优化WebTorrent客户端配置

修改background.js,显式指定tracker和WebRTC配置,适配Service Worker环境:

importScripts('webtorrent.min.js');

// 指定稳定的公共WebTorrent Tracker
const trackers = [
  'wss://tracker.openwebtorrent.com',
  'wss://tracker.webtorrent.dev',
  'wss://tracker.btorrent.xyz'
];

// 配置STUN服务器,确保WebRTC能建立P2P连接
const rtcConfig = {
  iceServers: [
    { urls: 'stun:stun.l.google.com:19302' },
    { urls: 'stun:stun1.l.google.com:19302' }
  ]
};

const client = new WebTorrent({
  tracker: { announce: trackers },
  rtcConfig: rtcConfig
});

client.seed(new File(['Testing testing'], 'test.txt'), (torrent) => {
    console.log('磁力链接:', torrent.magnetURI);
    // 监听Peer连接事件,用于调试
    torrent.on('wire', (wire, addr) => {
        console.log('已连接对等节点:', addr);
    });
});

// 延长Service Worker生命周期,避免被浏览器休眠
self.addEventListener('fetch', () => {});
self.addEventListener('message', (event) => {
    event.waitUntil(self.clients.claim());
});

3. 调试验证

  • 打开扩展后台页面的控制台,查看是否打印出对等节点连接日志。
  • 使用instant.io或本地网页添加磁力链接,确认是否能成功连接并下载文件。

关键说明

  • Service Worker默认会在闲置时被浏览器休眠,添加fetch和message监听能延长其活跃时间,但无法永久保持运行(Manifest V3限制)。
  • 必须使用WSS协议的tracker,因为Chrome扩展Manifest V3禁止非安全的HTTP请求。

内容的提问来源于stack exchange,提问作者Henry Sanger

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.12 23:10:25