perf: 16x larger chunks + native backpressure for faster transfers
All checks were successful
Build & Deploy / build-and-deploy (push) Successful in 41s

- CHUNK_SIZE: 16 KB → 256 KB (16x fewer send calls)
- MAX_BUFFER: 1 MB → 4 MB (more data in flight)
- waitForDrain: polling setTimeout → native bufferedamountlow event

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
ordinarthur 2026-04-14 12:53:36 +02:00
parent 8212bc7391
commit 62aeb895c1
3 changed files with 12 additions and 11 deletions

View File

@ -164,8 +164,8 @@ export interface PushPayload {
// ── Constants ──
export const CHUNK_SIZE = 16 * 1024; // 16 KB
export const MAX_BUFFER = 1024 * 1024; // 1 MB backpressure threshold
export const CHUNK_SIZE = 256 * 1024; // 256 KB
export const MAX_BUFFER = 4 * 1024 * 1024; // 4 MB backpressure threshold
export const SHORT_CODE_ALPHABET = "abcdefghjkmnpqrstuvwxyz23456789";
export const SHORT_CODE_LENGTH = 3;

File diff suppressed because one or more lines are too long

View File

@ -89,15 +89,16 @@ export async function sendFile(
function waitForDrain(peer: SimplePeer.Instance): Promise<void> {
return new Promise((resolve) => {
const check = () => {
const channel = (peer as any)._channel as RTCDataChannel | undefined;
if (!channel || channel.bufferedAmount < MAX_BUFFER) {
resolve();
} else {
setTimeout(check, 10);
}
const channel = (peer as any)._channel as RTCDataChannel | undefined;
if (!channel || channel.bufferedAmount < MAX_BUFFER) {
resolve();
return;
}
channel.bufferedAmountLowThreshold = MAX_BUFFER / 2;
channel.onbufferedamountlow = () => {
channel.onbufferedamountlow = null;
resolve();
};
check();
});
}