Binary Data
Send and receive ArrayBuffer data natively over WebSocket using live.binary().
Server
// src/live/files.js
import { live } from 'svelte-realtime/server';
export const uploadImage = live.binary(async (ctx, buffer) => {
const id = crypto.randomUUID();
await storage.write(id, buffer);
return { id, size: buffer.byteLength };
}); Client
<script>
import { uploadImage } from '$live/files';
async function handleFile(e) {
const file = e.target.files[0];
const buffer = await file.arrayBuffer();
const result = await uploadImage(buffer);
console.log('Uploaded:', result.id);
}
</script>
<input type="file" onchange={handleFile} /> Binary RPCs bypass JSON serialization - the raw ArrayBuffer is sent as a WebSocket binary frame.
Was this page helpful?