Berbagi teknologi

[JavaScript Script Universe] Komunikasi waktu nyata dan jaringan terdesentralisasi: pengenalan mendetail tentang perpustakaan JavaScript

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Koneksi peer-to-peer, pengelolaan seed WebRTC, komunikasi real-time: jelajahi enam perpustakaan JavaScript

Kata pengantar

Karena aplikasi web modern semakin memerlukan komunikasi real-time dan desentralisasi, perpustakaan JavaScript memainkan peran penting dalam membangun koneksi peer-to-peer, transfer data real-time, dan jaringan terdistribusi. Artikel ini akan memperkenalkan beberapa perpustakaan JavaScript populer, termasuk PeerJS, WebTorrent, Simple-Peer, Socket.IO, Libp2p dan SwarmJS, yang masing-masing menyediakan fungsi dan fitur berbeda untuk memenuhi kebutuhan pengembangan yang berbeda.

Selamat berlangganan kolom:Alam Semesta Skrip JavaScript

Direktori artikel

1. PeerJS: Pustaka koneksi peer-to-peer sederhana

1.1 Pendahuluan

PeerJS adalah pustaka JavaScript untuk membuat koneksi peer-to-peer, yang memudahkan komunikasi langsung antar browser. Pustaka ini menyediakan API yang sederhana dan mudah digunakan, memungkinkan pengembang dengan cepat membangun aplikasi berdasarkan koneksi P2P. Melalui PeerJS, pengguna dapat melakukan obrolan video, berbagi file, dan fungsi lainnya langsung di browser tanpa menggunakan server pihak ketiga.

1.1.1 Fungsi inti
  • Transfer data langsung titik-ke-titik
  • Mendukung transmisi langsung aliran audio dan video
  • Menyediakan API yang sederhana dan mudah digunakan
1.1.2 Skenario penggunaan

PeerJS cocok untuk skenario yang memerlukan komunikasi point-to-point di browser, seperti platform pendidikan online, alat kolaborasi real-time, aplikasi konferensi video, dll.

1.2 Instalasi dan konfigurasi

1.2.1 Panduan Instalasi

Anda dapat menginstal PeerJS melalui npm:

npm install peerjs
  • 1
1.2.2 Konfigurasi dasar

Sebelum menggunakan PeerJS, Anda perlu memasukkan file JavaScript yang sesuai ke halaman:

<script src="https://cdn.jsdelivr.net/npm/peerjs@1"></script>
  • 1

1.3 Ikhtisar API

1.3.1 Membuat objek Rekan

Pertama, kita perlu membuat objek Peer untuk mewakili klien saat ini.

const peer = new Peer({key: 'your-api-key'});
  • 1

Dalam kode di atas,your-api-key Itu harus diganti dengan kunci API yang Anda minta di situs resmi PeerJS.Jika Anda tidak memiliki kunci API, Anda dapat membukanyaSitus web resmi PeerJSMenerapkan.

1.3.2 Membangun koneksi

Setelah objek Peer berhasil dibuat, kita dapat mencoba menjalin koneksi dengan klien lain. Berikut adalah contoh sederhana yang menunjukkan cara membuat koneksi peer-to-peer melalui PeerJS:

// 初始化Peer对象
const peer = new Peer({key: 'your-api-key'});

// 当Peer对象打开连接时
peer.on('open', (id) => {
  console.log('My peer ID is: ' + id);
});

// 尝试连接至另一个Peer
const conn = peer.connect('another-peer-id');

// 当连接建立时
conn.on('open', () => {
  // 发送数据
  conn.send('Hello, world!');
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16

Dalam contoh di atas, pertama-tama kita menginisialisasi objek Peer dan mengeluarkan ID yang sesuai setelah membuka koneksi. Kami kemudian mencoba membuat koneksi dengan Rekan lain dan mengirim pesan setelah koneksi dibuat.

Di atas adalah pengenalan singkat dan penggunaan dasar perpustakaan PeerJS.Untuk dokumentasi dan contoh API yang lebih detail, silakan merujuk keDokumentasi resmi

2. WebTorrent: Repositori torrent WebRTC untuk digunakan di browser

WebTorrent adalah pustaka klien P2P BitTorrent modern yang dapat digunakan di browser dan Node.js. Ini menggunakan saluran data WebRTC untuk mencapai transmisi media streaming yang efisien.

2.1 Pendahuluan

2.1.1 Fungsi inti

WebTorrent menyediakan fungsi berbagi file peer-to-peer (P2P) berdasarkan WebRTC, yang dapat mengunduh dan berbagi file torrent langsung di browser, dan juga mendukung pengoperasian di lingkungan Node.js.

2.1.2 Skenario penggunaan

WebTorrent dapat digunakan untuk membuat aplikasi transmisi media streaming lintas platform untuk video real-time, audio dan data multimedia lainnya, dan juga dapat digunakan dalam pendidikan online, konferensi jarak jauh dan bidang lainnya.

2.2 Instalasi dan konfigurasi

2.2.1 Panduan Instalasi

Menggunakan WebTorrent di browser tidak memerlukan instalasi perangkat lunak apa pun, cukup pengenalan perpustakaan JavaScript yang sesuai. Digunakan di Node.js, dapat diinstal melalui npm:

npm install webtorrent
  • 1
2.2.2 Konfigurasi dasar

Di lingkungan browser, Anda dapat langsung memasukkan file JavaScript terkait WebTorrent:

<script src="https://cdn.jsdelivr.net/npm/webtorrent/webtorrent.min.js"></script>
  • 1

Di lingkungan Node.js, WebTorrent dapat diperkenalkan menggunakan:

const WebTorrent = require('webtorrent');
  • 1

2.3 Ikhtisar API

2.3.1 Membuat benih

WebTorrent menyediakan API untuk membuat torrent, yang dapat mengubah file atau tautan lokal menjadi file torrent. Contoh kodenya adalah sebagai berikut:

const client = new WebTorrent();

// 创建种子
client.seed('path/to/file', { announce: ['wss://tracker.openwebtorrent.com'] }, torrent => {
  console.log('种子已创建:', torrent.magnetURI);
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

Untuk informasi lebih lanjut tentang cara membuat benih, silakan merujuk ke Dokumentasi resmi WebTorrent

2.3.2 Menghubungkan Rekan

Pengguna dapat terhubung ke node lain, berbagi dan mengunduh file melalui WebTorrent. Contoh kodenya adalah sebagai berikut:

// 加入种子
client.add('magnet:?xt=urn:btih:6bec5a9f74c8d5ea5b9d0ea9cdaae3815f14a28b', torrent => {
  // 下载完成后触发
  torrent.on('done', () => {
    console.log('下载完成');
    // 获取文件
    const file = torrent.files[0];
    file.getBuffer((err, buffer) => {
      if (err) throw err;
      console.log('获取文件的缓冲区:', buffer);
    });
  });
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

Untuk informasi lebih lanjut tentang menghubungkan Rekan, silakan merujuk ke Dokumentasi resmi WebTorrent

Ekspansi: WebTorrent juga menyediakan banyak API dan fungsi berguna lainnya, seperti streaming, mengelola antrean unduhan, dll., sehingga pengembang dapat melakukan penelitian mendalam dan menggunakannya sesuai dengan kebutuhan spesifik.

3. Simple-Peer: Pustaka WebRTC yang lebih sederhana

3.1 Pendahuluan

Simple-Peer adalah pustaka JavaScript untuk WebRTC yang menyediakan antarmuka sederhana untuk mengimplementasikan transmisi data point-to-point dan komunikasi streaming.

3.1.1 Fungsi inti

Simple-Peer terutama menyediakan fungsi inti berikut:

  • Buat koneksi peer-to-peer di browser
  • Sadarilah transmisi aliran audio dan video
  • Menyediakan saluran data untuk transmisi data real-time
3.1.2 Skenario penggunaan

Simple-Peer dapat digunakan untuk membangun aplikasi pesan instan berbasis browser, sistem konferensi video, berbagi file, dan skenario lain yang memerlukan komunikasi point-to-point.

3.2 Instalasi dan konfigurasi

3.2.1 Metode instalasi

Anda dapat menginstal Simple-Peer melalui npm:

npm install simple-peer
  • 1

Atau gunakan CDN untuk mengimpornya langsung ke file HTML:

<script src="https://cdn.jsdelivr.net/npm/simple-peer@latest"></script>
  • 1
3.2.2 Pengaturan dasar

Sebelum menggunakan Simple-Peer, Anda perlu memastikan bahwa aplikasi Anda mendukung WebRTC dan pengguna telah mengizinkan penggunaan kamera dan mikrofon.

3.3 Ikhtisar API

3.3.1 Membuat objek SimplePeer

Anda dapat membuat objek SimplePeer menggunakan kode berikut:

const SimplePeer = require('simple-peer');

// 初始化 SimplePeer 对象
const peer = new SimplePeer({
  initiator: true, // 是否是连接的发起方
  trickle: false    // 是否启用 ICE trickle(加速连接过程)
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Untuk informasi lebih lanjut tentang cara membuat objek SimplePeer, silakan merujuk ke Dokumentasi resmi

3.3.2 Mengirim data

Setelah koneksi berhasil dibuat, Anda dapat mengirim data melalui saluran objek SimplePeer. Berikut ini contoh sederhananya:

// 监听连接建立事件
peer.on('connect', () => {
  // 发送数据
  peer.send('Hello, world!');
});

// 监听数据接收事件
peer.on('data', data => {
  console.log('Received', data);
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

Dalam contoh di atas, kita lolos send Metode ini mengirimkan sepotong data string dan mendengarkannyadata acara untuk menerima data.

Di atas adalah contoh sederhana dari Simple-Peer. Untuk penggunaan API dan opsi konfigurasi yang lebih detail, silakan merujuk ke Dokumentasi resmi

4. Socket.IO: Pustaka JavaScript untuk komunikasi dua arah secara real-time

Socket.IO adalah perpustakaan JavaScript yang menyediakan kemampuan komunikasi dua arah secara real-time dan dapat digunakan untuk membangun aplikasi Web real-time. Ini didasarkan pada protokol WebSocket tradisional dan juga mendukung polling dan mekanisme komunikasi real-time lainnya, sehingga lebih kompatibel.

4.1 Pendahuluan

4.1.1 Fungsi inti

Fitur inti Socket.IO meliputi:

  • Komunikasi dua arah secara real-time
  • Manajemen koneksi otomatis
  • Dukungan beberapa mekanisme komunikasi real-time
  • arsitektur yang digerakkan oleh peristiwa
4.1.2 Skenario penggunaan

Socket.IO dapat diterapkan dalam skenario yang memerlukan pembaruan data secara real-time, seperti game online, pesan instan, pengeditan kolaboratif secara real-time, dll.

4.2 Instalasi dan konfigurasi

4.2.1 Petunjuk pemasangan

Instal melalui npm:

npm install socket.io
  • 1
4.2.2 Konfigurasi dasar

Di sisi server, gunakan kode berikut untuk menginisialisasi Socket.IO:

const io = require('socket.io')(http);
  • 1

Di sisi klien, perkenalkan perpustakaan klien Socket.IO:

<script src="/socket.io/socket.io.js"></script>
  • 1

4.3 Ikhtisar API

4.3.1 Membuat sambungan Soket

Di sisi klien, buat koneksi Socket dengan server melalui kode berikut:

const socket = io();
  • 1
4.3.2 Pemrosesan kejadian secara real-time

Socket.IO mendukung pemicuan dan pemantauan peristiwa khusus.Berikut ini adalah contoh sederhana, ketika sisi server terpicuchat message Ketika suatu peristiwa terjadi, klien melakukan operasi terkait:
Terminal Layanan:

io.on('connection', (socket) => {
  socket.on('chat message', (msg) => {
    io.emit('chat message', msg);
  });
});
  • 1
  • 2
  • 3
  • 4
  • 5

Klien:

socket.on('chat message', (msg) => {
  console.log('message: ' + msg);
});
  • 1
  • 2
  • 3

Untuk informasi API lebih detail dan contoh penggunaan, lihat Dokumentasi resmi Socket.IO

5. Libp2p: Tumpukan protokol jaringan modular untuk membangun aplikasi jaringan terdesentralisasi

5.1 Pendahuluan

Libp2p adalah tumpukan protokol jaringan modular untuk membangun aplikasi jaringan terdesentralisasi. Libp2p menyediakan serangkaian modul dan alat yang memungkinkan pengembang dengan mudah membangun aplikasi jaringan peer-to-peer (P2P).

5.1.1 Fungsi inti
  • Beberapa protokol transmisi didukung
  • perutean dan penemuan
  • transmisi yang aman
  • Skalabilitas
5.1.2 Skenario penerapan
  • Blockchain
  • Penyimpanan file terdistribusi
  • Aplikasi terdesentralisasi

5.2 Instalasi dan konfigurasi

5.2.1 Petunjuk pemasangan

Instal Libp2p melalui npm:

npm install libp2p
  • 1
5.2.2 Konfigurasi dasar
const Libp2p = require('libp2p')

async function createNode() {
  const node = await Libp2p.create()
  await node.start()
  console.log('Node started!')
}

createNode()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

5.3 Ikhtisar API

5.3.1 Pembuatan dan pengelolaan node

menggunakanLibp2p.create()metode membuat node dan kemudian memanggilstart() Metode untuk memulai node. Berikut ini contoh kode JavaScript lengkapnya:

const Libp2p = require('libp2p')

async function createNode() {
  const node = await Libp2p.create()
  await node.start()
  console.log('Node started!')
}

createNode()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

Dokumentasi resmi:Libp2p - Membuat Node

5.3.2 Transmisi dan perutean data

Libp2p menyediakan API yang kaya untuk menangani transmisi dan perutean data, seperti menggunakan protokol transmisi untuk transmisi data, menerapkan strategi perutean khusus, dll. Berikut adalah contoh transfer data sederhana:

const Libp2p = require('libp2p')
const TCP = require('libp2p-tcp')
const MPLEX = require('libp2p-mplex')

async function createNode() {
  const node = await Libp2p.create({
    addresses: {
      listen: ['/ip4/0.0.0.0/tcp/0']
    },
    modules: {
      transport: [TCP],
      streamMuxer: [MPLEX]
    }
  })
  await node.start()
  console.log('Node started!')
}

createNode()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19

Dokumentasi resmi:Libp2p - Transmisi dan Perutean Data

Melalui pengenalan, instalasi dan konfigurasi, serta ikhtisar API Libp2p di atas, saya harap dapat membantu Anda memahami dan mulai menggunakan perpustakaan Libp2p dengan lebih cepat.

6. SwarmJS: Pustaka JavaScript berdasarkan protokol jaringan Swarm untuk penyimpanan dan komunikasi terdistribusi

6.1 Pendahuluan

SwarmJS adalah perpustakaan JavaScript berdasarkan protokol jaringan Swarm, yang dirancang untuk menyediakan penyimpanan terdistribusi dan kemampuan komunikasi. Hal ini memungkinkan pengembang untuk bertukar dan menyimpan data melalui jaringan P2P, memungkinkan pengelolaan data yang sangat aman dan terdesentralisasi.

6.1.1 Fungsi inti

Fitur inti SwarmJS meliputi:

  • Penyimpanan terdistribusi: Melalui protokol jaringan Swarm, penyimpanan data terdistribusi diwujudkan untuk memastikan keandalan dan daya tahan data yang tinggi.
  • Komunikasi P2P: Mendukung komunikasi berdasarkan jaringan P2P, memungkinkan aplikasi untuk secara langsung mentransfer pesan dan bertukar data antar node.
6.1.2 Skenario penggunaan

SwarmJS dapat digunakan dalam skenario seperti aplikasi terdesentralisasi (DApps), dompet mata uang kripto, penyimpanan file terdistribusi, dll. untuk mencapai penyimpanan yang aman dan komunikasi data yang efisien.

6.2 Instalasi dan konfigurasi

6.2.1 Metode instalasi

SwarmJS dapat diinstal melalui alat manajemen paket npm:

npm install swarm-js
  • 1
6.2.2 Pengaturan dasar

Setelah instalasi selesai, perpustakaan SwarmJS dapat diperkenalkan dengan cara berikut:

const Swarm = require('swarm-js');
  • 1

6.3 Ikhtisar API

6.3.1 Bergabung dengan jaringan Swarm

Bergabung dengan jaringan Swarm menggunakan SwarmJS sangat sederhana dan dapat dilakukan hanya dengan beberapa baris kode:

// 创建Swarm实例
const mySwarm = new Swarm();

// 加入Swarm网络
mySwarm.joinNetwork();
  • 1
  • 2
  • 3
  • 4
  • 5

Dokumentasi API terperinci dapat ditemukan diDokumentasi resmi SwarmJSLihat di .

6.3.2 Penyimpanan dan pengambilan data

SwarmJS menyediakan fungsi penyimpanan dan pengambilan data yang sederhana dan kuat. Berikut ini adalah contoh sederhana:

// 存储数据
mySwarm.put('key', 'value');

// 检索数据
mySwarm.get('key', (err, value) => {
  if (err) {
    console.error(err);
  } else {
    console.log('Retrieved value:', value);
  }
});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

Untuk detail API lebih lanjut tentang penyimpanan dan pengambilan data, silakan merujuk keDokumentasi resmi SwarmJS

Melalui SwarmJS, kita dapat dengan mudah mengimplementasikan penyimpanan dan komunikasi terdistribusi berdasarkan protokol jaringan Swarm, menghadirkan kemungkinan baru dalam pengembangan aplikasi.

Meringkaskan

Artikel ini memperkenalkan serangkaian pustaka JavaScript penting yang memainkan peran penting dalam pengembangan aplikasi web modern. Baik itu membangun platform komunikasi real-time, menerapkan manajemen benih WebRTC, atau mengembangkan aplikasi jaringan terdesentralisasi, perpustakaan ini menyediakan fungsi yang kaya dan API yang fleksibel, menyediakan alat yang canggih bagi pengembang. Dengan memiliki pemahaman mendalam tentang fungsi inti, skenario penggunaan, dan ikhtisar API perpustakaan ini, pengembang dapat memilih alat yang tepat dan mempercepat proses pengembangan aplikasi dengan lebih baik.