Sistem Penstriman Masa Nyata (WebRTC + Data Langsung) · Pelajaran

Pemindahan Fail melalui Saluran Data WebRTC

Pelajari cara menghantar fail antara rakan melalui saluran data WebRTC, termasuk pemecahan, tekanan balik, susunan dan penjejakan kemajuan.

Pelajaran 4 daripada 413 langkah

Pemindahan Fail melalui Saluran Data WebRTC ialah pelajaran Sistem Penstriman Masa Nyata (WebRTC + Data Langsung) percuma di CoddyKit. Ini ialah pelajaran 4 daripada 4. Anda boleh membaca keseluruhan pelajaran di bawah secara percuma — kemudian berlatih secara praktikal dalam pelayar menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran Sistem Penstriman Masa Nyata (WebRTC + Data Langsung), dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus Sistem Penstriman Masa Nyata (WebRTC + Data Langsung) merangkumi sejumlah 4 pelajaran.

Melangkaui Sembang: Menghantar Fail

Saluran data WebRTC tidak terhad kepada sembang teks. Saluran ini boleh membawa data perduaan sewenang-wenangnya, yang membolehkan pemindahan fail rakan ke rakan tanpa memuat naiknya ke pelayan.

Ini memastikan fail besar tidak menggunakan infrastruktur anda dan mengurangkan kependaman.

Jenis Perduaan pada Saluran

Saluran data boleh menghantar rentetan atau data perduaan. Untuk fail, tetapkan binaryType supaya data yang diterima tiba sebagai ArrayBuffer.

const channel = pc.createDataChannel('file');
channel.binaryType = 'arraybuffer';

Sebab Anda Mesti Membahagikan Data

Anda tidak boleh menghantar fail 500MB dalam satu mesej. Saluran mempunyai saiz mesej maksimum (lazimnya sekitar 256KB). Hantar fail sebagai urutan bahagian.

  • Bahagikan fail kepada bahagian bersaiz tetap.
  • Hantar setiap bahagian mengikut turutan.
  • Pasang semula pada penerima.

Membahagikan Fail

Objek pelayar File menyokong slice(), yang mengembalikan Blob yang boleh anda baca sebagai ArrayBuffer.

const CHUNK = 16 * 1024;
let offset = 0;
function nextChunk(file) {
  const slice = file.slice(offset, offset + CHUNK);
  offset += CHUNK;
  return slice.arrayBuffer();
}

Menghantar Metadata Terlebih Dahulu

Sebelum bait dihantar, hantar pengepala JSON kecil supaya penerima mengetahui nama, jenis dan saiz keseluruhan fail. Dengan ini, penerima boleh memaparkan kemajuan dan membina gumpalan akhir dengan betul.

channel.send(JSON.stringify({
  name: file.name,
  size: file.size,
  type: file.type
}));

Masalah Tekanan Balik

Jika anda menolak bahagian lebih pantas daripada kadar rangkaian mengosongkannya, penimbal penghantaran akan membesar dan halaman boleh ranap. Pantau bufferedAmount dan jeda apabila nilainya tinggi.

channel.bufferedAmountLowThreshold = 65536;
if (channel.bufferedAmount > 1 * 1024 * 1024) {
  await new Promise(r =>
    channel.addEventListener('bufferedamountlow', r, { once: true }));
}

Penghantaran Mengikut Turutan dan Boleh Dipercayai

Secara lalai, saluran data adalah mengikut turutan dan boleh dipercayai (seperti TCP), iaitu tepat seperti yang diperlukan oleh pemindahan fail.

Untuk fail, jangan gunakan pilihan tanpa turutan/tidak boleh dipercayai yang sesuai untuk keadaan permainan. Kekalkan tetapan lalai.

Memasang Semula pada Penerima

Penerima mengumpulkan setiap ArrayBuffer sehingga jumlah yang diterima menyamai saiz yang diumumkan, kemudian membina gumpalan.

const parts = [];
let received = 0;
channel.onmessage = (e) => {
  parts.push(e.data);
  received += e.data.byteLength;
  if (received === meta.size) {
    const blob = new Blob(parts, { type: meta.type });
    save(blob, meta.name);
  }
};

Memaparkan Kemajuan

Kira peratusan berdasarkan bait yang dihantar atau diterima berbanding saiz keseluruhan. Kemas kini antara muka pengguna pada kedua-dua hujung supaya pengguna dapat melihat bar kemajuan secara langsung.

const percent = Math.round((received / meta.size) * 100);

Mencetuskan Muat Turun

Tukarkan gumpalan yang telah siap kepada pautan yang boleh dimuat turun menggunakan URL objek.

function save(blob, name) {
  const url = URL.createObjectURL(blob);
  const a = document.createElement('a');
  a.href = url; a.download = name; a.click();
  URL.revokeObjectURL(url);
}

Kebolehpercayaan dan Sambung Semula

Jika sambungan terputus semasa pemindahan, anda boleh menyambung semula dengan menjejaki offset terakhir yang diakui dan memulakan semula dari situ. Gabungkan langkah ini dengan jumlah semak untuk mengesahkan integriti pada akhir proses.

Semakan Pantas

Uji pemahaman anda tentang pemindahan fail melalui saluran data.

Imbas Kembali

Pemindahan fail P2P melalui saluran data: hantar metadata, bahagikan kepada bahagian, hormati tekanan balik, kekalkan penghantaran mengikut turutan dan boleh dipercayai, pasang semula menjadi gumpalan dan muat turun.

Percuma untuk bermula

Pelajari Sistem Penstriman Masa Nyata (WebRTC + Data Langsung) dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
12
Pelajaran
48

Soalan Lazim

Adakah pelajaran “Pemindahan Fail melalui Saluran Data WebRTC” percuma?

Ya — teks penuh “Pemindahan Fail melalui Saluran Data WebRTC” boleh dibaca secara percuma di web ini. Untuk berlatih secara interaktif menggunakan penyunting kod terbina dalam dan tutor kecerdasan buatan 24/7, serta membuka kunci baki kursus Sistem Penstriman Masa Nyata (WebRTC + Data Langsung), tingkat taraf kepada CoddyKit PRO. Kursus Sistem Penstriman Masa Nyata (WebRTC + Data Langsung) merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Pemindahan Fail melalui Saluran Data WebRTC”?

Pelajari cara menghantar fail antara rakan melalui saluran data WebRTC, termasuk pemecahan, tekanan balik, susunan dan penjejakan kemajuan. Anda berlatih Sistem Penstriman Masa Nyata (WebRTC + Data Langsung) menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan Sistem Penstriman Masa Nyata (WebRTC + Data Langsung)?

Tiada pengalaman terdahulu diperlukan. Pembelajaran Sistem Penstriman Masa Nyata (WebRTC + Data Langsung) di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 4 daripada 4.

Berapa lamakah pelajaran “Pemindahan Fail melalui Saluran Data WebRTC” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran Sistem Penstriman Masa Nyata (WebRTC + Data Langsung) ini?

Ya. Setiap pelajaran Sistem Penstriman Masa Nyata (WebRTC + Data Langsung) menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Menyegerakkan Metadata WebRTC
  2. Sembang Masa Nyata melalui Saluran Data
  3. Berkongsi Keadaan Aplikasi Secara Langsung
  4. Pemindahan Fail melalui Saluran Data WebRTC
← Kembali ke Sistem Penstriman Masa Nyata (WebRTC + Data Langsung)