ENF News Bot
Automated News Bot
- Joined
- Apr 15, 2022
- Messages
- 2,591
The Sandbox SDK ↗︎ now supports PTY (pseudo-terminal) passthrough, enabling browser-based terminal UIs to connect to sandbox shells via WebSocket.
https://developers.cloudflare.com/changelog/rss/#sandboxterminalrequest
The new
Each session can have its own terminal with an isolated working directory and environment, so users can run separate shells side-by-side in the same container.
The new
To update to the latest version:
Continue reading...
sandbox.terminal(request)
https://developers.cloudflare.com/changelog/rss/#sandboxterminalrequestThe new
terminal() method proxies a WebSocket upgrade to the container's PTY endpoint, with output buffering for replay on reconnect.
Code:
// Worker: proxy WebSocket to container terminal
return sandbox.terminal(request, { cols: 80, rows: 24 });
Code:
// Worker: proxy WebSocket to container terminal
return sandbox.terminal(request, { cols: 80, rows: 24 });
Multiple terminals per sandbox
https://developers.cloudflare.com/changelog/rss/#multiple-terminals-per-sandboxEach session can have its own terminal with an isolated working directory and environment, so users can run separate shells side-by-side in the same container.
Code:
// Multiple isolated terminals in the same sandbox
const dev = await sandbox.getSession("dev");
return dev.terminal(request);
Code:
// Multiple isolated terminals in the same sandbox
const dev = await sandbox.getSession("dev");
return dev.terminal(request);
xterm.js addon
https://developers.cloudflare.com/changelog/rss/#xtermjs-addonThe new
@cloudflare/sandbox/xterm export provides a SandboxAddon for xterm.js ↗︎ with automatic reconnection (exponential backoff + jitter), buffered output replay, and resize forwarding.
Code:
import { SandboxAddon } from "@cloudflare/sandbox/xterm";
const addon = new SandboxAddon({
getWebSocketUrl: ({ sandboxId, origin }) =>
`${origin}/ws/terminal?id=${sandboxId}`,
onStateChange: (state, error) => updateUI(state),
});
terminal.loadAddon(addon);
addon.connect({ sandboxId: "my-sandbox" });
Code:
import { SandboxAddon } from "@cloudflare/sandbox/xterm";
const addon = new SandboxAddon({
getWebSocketUrl: ({ sandboxId, origin }) =>
`${origin}/ws/terminal?id=${sandboxId}`,
onStateChange: (state, error) => updateUI(state),
});
terminal.loadAddon(addon);
addon.connect({ sandboxId: "my-sandbox" });
Upgrade
https://developers.cloudflare.com/changelog/rss/#upgradeTo update to the latest version:
npm i @cloudflare/sandbox@latestContinue reading...