Global

Members

(constant) TIMEOUT_LAUNCH

Description:
  • Chrome 生命週期管理器

    設計原則:state 由 Playwright 的 context.isClosed() 衍生,不自製 state machine。 caller 看 snapshot 拿 'open' / 'closed' 兩態;操作 API 只在 open 狀態可用,否則拋 chromeState-tagged Error 給 errResponse 統一處理。

    lifecycle 操作(open / close / shutdown)走 _opLock 序列化,避免並發 race。

Source:

Chrome 生命週期管理器

設計原則:state 由 Playwright 的 context.isClosed() 衍生,不自製 state machine。 caller 看 snapshot 拿 'open' / 'closed' 兩態;操作 API 只在 open 狀態可用,否則拋 chromeState-tagged Error 給 errResponse 統一處理。

lifecycle 操作(open / close / shutdown)走 _opLock 序列化,避免並發 race。

Methods

(async) WScreenctl(optopt) → {Promise.<Server>}

Description:
  • 啟動 w-screenctl 服務,對外提供 REST API 控制作業系統桌面(滑鼠、鍵盤、截圖)與 Chrome 瀏覽器

    跨平台支援:Linux 走 xdotool / ImageMagick,Windows 走 w-mousekey / AHK;Chrome 控制全平台皆透過 Playwright

    零信任設計:caller 可任意 retry / 中斷 / agent swap,server 維持自洽狀態。所有 chrome lifecycle 透過 ChromeManager 序列化;所有路由經由 routeFactory 統一錯誤處理;所有 payload 經 Joi 驗證。

Source:
Parameters:
Name Type Attributes Default Description
opt Object <optional>
{}

輸入設定物件

Properties
Name Type Attributes Default Description
port Integer <optional>
7000

服務監聽 port,優先序:env PORT > opt.port > 7000

fdUserData String <optional>

Chrome user data 資料夾路徑,優先序:env CHROME_USER_DATA > opt.fdUserData > 當前工作路徑下的 ./user_data

Returns:

Hapi server 實例

Type
Promise.<Server>