Наблюдение за каталогом
Наблюдайте за каталогом, если приложение должно реагировать на создание или изменение файлов в работающей песочнице.
mjs
import { FilesystemEventType, Sandbox } from "@abox-dev/sdk";
const sandbox = await Sandbox.create();
try {
let receiveEvent;
const nextWrite = new Promise((resolve) => {
receiveEvent = resolve;
});
const watcher = await sandbox.files.watchDir(
"/tmp",
(event) => {
if (event.type === FilesystemEventType.WRITE) receiveEvent(event);
},
{ includeEntry: true },
);
await sandbox.files.write("/tmp/message.txt", "Hello");
const event = await nextWrite;
console.log(event.type, event.entry?.path);
await watcher.stop();
} finally {
await sandbox.kill();
}JavaScript передаёт события в обработчик watchDir. Python накапливает их до вызова get_new_events(). Остановите наблюдение, когда оно больше не нужно.
Параметр recursive включает существующие вложенные каталоги. Чтобы получать сведения о файле вместе с событием, задайте includeEntry в JavaScript или include_entry в Python. После удаления файла сведения могут отсутствовать.
Для сетевой файловой системы нужно явно включить allowNetworkMounts / allow_network_mounts. Доставка таких событий не гарантируется: изменения от другого клиента не попадают в наблюдатель песочницы.