diff --git a/config/default_config/bot.yaml b/config/default_config/bot.yaml index bf2a9c2..f02c673 100644 --- a/config/default_config/bot.yaml +++ b/config/default_config/bot.yaml @@ -11,6 +11,8 @@ ffprobe_path: # chromium其他路径 chromium_path: +# puppeteer接口地址 +puppeteer_ws: # 米游社接口代理地址,国际服用 proxyAddress: @@ -18,4 +20,4 @@ proxyAddress: # 上线时给首个主人QQ推送帮助 online_msg: true # 上线推送通知的冷却时间 -online_msg_exp: 86400 \ No newline at end of file +online_msg_exp: 86400 diff --git a/renderers/puppeteer/config_default.yaml b/renderers/puppeteer/config_default.yaml index fbc8de3..a8ec551 100644 --- a/renderers/puppeteer/config_default.yaml +++ b/renderers/puppeteer/config_default.yaml @@ -5,6 +5,10 @@ # chromiumPath: C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe chromiumPath: +# puppeteer websocket 地址。连接单独存在的 chromium。 +# puppeteerWS: 'ws://browserless:3000' +puppeteerWS: + # headless headless: true @@ -13,4 +17,4 @@ args: - --disable-gpu - --disable-setuid-sandbox - --no-sandbox - - --no-zygote \ No newline at end of file + - --no-zygote diff --git a/renderers/puppeteer/lib/puppeteer.js b/renderers/puppeteer/lib/puppeteer.js index cba380e..1334773 100644 --- a/renderers/puppeteer/lib/puppeteer.js +++ b/renderers/puppeteer/lib/puppeteer.js @@ -35,6 +35,10 @@ export default class PuppeteerRenderer { /** chromium其他路径 */ this.config.executablePath = config.chromiumPath || cfg?.bot?.chromium_path } + if (config.puppeteerWS || cfg?.bot?.puppeteer_ws) { + /** chromium其他路径 */ + this.config.wsEndpoint = config.puppeteerWS || cfg?.bot?.puppeteer_ws + } this.html = {} this.watcher = {} @@ -65,31 +69,29 @@ export default class PuppeteerRenderer { let connectFlag = false try { - // 如果是pm2启动,尝试连接已有实例 - if (process.env.pm_id) { - // 获取Mac地址 - if (!mac) { - mac = await this.getMac() - this.browserMacKey = `Yz:chromium:browserWSEndpoint:${mac}` - } - // 是否有browser实例 - const browserUrl = await redis.get(this.browserMacKey) - if (browserUrl) { - const browserWSEndpoint = await puppeteer.connect({ browserWSEndpoint: browserUrl }).catch((err) => { - logger.error('puppeteer Chromium 缓存的实例已关闭') - redis.del(this.browserMacKey) - }) - // 如果有实例,直接使用 - if (browserWSEndpoint) { - this.browser = browserWSEndpoint - if (this.browser) { - connectFlag = true - } + // 获取Mac地址 + if (!mac) { + mac = await this.getMac() + this.browserMacKey = `Yz:chromium:browserWSEndpoint:${mac}` + } + // 是否有browser实例 + const browserUrl = (await redis.get(this.browserMacKey)) || this.config.wsEndpoint + if (browserUrl) { + logger.mark(`puppeteer Chromium from ${browserUrl}`) + const browserWSEndpoint = await puppeteer.connect({ browserWSEndpoint: browserUrl }).catch((err) => { + logger.error('puppeteer Chromium 缓存的实例已关闭') + redis.del(this.browserMacKey) + }) + // 如果有实例,直接使用 + if (browserWSEndpoint) { + this.browser = browserWSEndpoint + if (this.browser) { + connectFlag = true } } } } catch (e) { - logger.error('puppeteer Chromium 尝试连接已有实例失败') + logger.mark('puppeteer Chromium 不存在已有实例') } if (!this.browser || !connectFlag) {