Heim >Web-Frontend >js-Tutorial >TCP-basierte PDatenübertragung
ClapPeer – ist eine Bibliothek zum Erstellen eines verteilten Netzwerks von Knoten, das den Nachrichtenaustausch zwischen ihnen unterstützt. Knoten können sowohl einfache als auch verschlüsselte Nachrichten austauschen.
https://github.com/DIY0R/clap-peer
const { ClapPeer, DM, CRYPTO_DM, ERROR, INVALID_CRYPTO_DM, } = require('clap-peer'); //Node - 1 const node_1 = new ClapPeer(1001, 'A'); node_1.on(DM, msg => console.log(msg)); node_1.on(CRYPTO_DM, msg => console.log(msg)); //Node - 2 const node_2 = new ClapPeer(1002, 'B'); node_2.connect({ host: '127.0.0.1', port: 1001 }); node_2 .send(node_1.nodeId, { hello: 'hello crypto' }) .catch(error => console.log(error)); node_2.publish(node_1.nodeId, { hello: 'just hello' });
Sie können eine von zwei Methoden verwenden, um eine Verbindung zu einem Knoten herzustellen: über die .connect-Methode oder durch Übergabe eines Konfigurationsobjekts beim Erstellen des Knotens. Wählen Sie die Methode basierend darauf, wie Sie Ihren Code strukturieren möchten. Hier sind die beiden Ansätze:
const node = new ClapPeer(1001, 'A'); node.connect({ host: '127.0.0.1', port: 1002 });
Hier erstellen wir einen Knoten und rufen dann die .connect()-Methode auf, wobei wir die Host- und Port-Parameter übergeben. Dadurch können Sie die Knotenerstellung und die Verbindungslogik trennen.
const node = new ClapPeer(1002, 'A', { host: '127.0.0.1', port: 1002 });
In diesem Fall übergeben wir die Verbindungsparameter direkt beim Erstellen des ClapPeer-Objekts. Diese Methode ist praktisch, wenn Sie sofort nach der Erstellung eine Verbindung zum Knoten herstellen müssen.
Die Sendemethode wird zum Senden verschlüsselter Nachrichten verwendet. Vor dem Senden prüft es, ob der öffentliche Schlüssel des Zielknotens verfügbar ist:
Beispiel:
node.send(node_2.nodeId, { text: 'Hello, secure world!' }).catch(error => { console.log(error); });
Die Veröffentlichungsmethode sendet Nachrichten ohne Verschlüsselung. Es leitet die Daten einfach an den angegebenen Knoten weiter.
Beispiel:
node.publish(node_2.nodeId, { text: 'Hello, open world!', });
Method | Encryption | Public Key Check | Request Public Key if Needed | Routing Through Intermediate Nodes |
---|---|---|---|---|
send | ✅ | ✅ | ✅ | ✅ |
publish | ❌ | ❌ | ❌ | ✅ |
Ein Knoten kann Ereignisse abonnieren, um sowohl einfache als auch verschlüsselte Nachrichten zu verarbeiten.
Nachrichten vom Typ DM werden generiert, wenn ein anderer Knoten die Veröffentlichungsmethode aufruft. Diese Nachrichten werden unverschlüsselt übertragen.
const { ClapPeer, DM, CRYPTO_DM, ERROR, INVALID_CRYPTO_DM, } = require('clap-peer'); //Node - 1 const node_1 = new ClapPeer(1001, 'A'); node_1.on(DM, msg => console.log(msg)); node_1.on(CRYPTO_DM, msg => console.log(msg)); //Node - 2 const node_2 = new ClapPeer(1002, 'B'); node_2.connect({ host: '127.0.0.1', port: 1001 }); node_2 .send(node_1.nodeId, { hello: 'hello crypto' }) .catch(error => console.log(error)); node_2.publish(node_1.nodeId, { hello: 'just hello' });
Nachrichten vom Typ CRYPTO_DM werden generiert, wenn die Sendemethode von einem anderen Knoten aufgerufen wird. Diese Nachrichten werden verschlüsselt empfangen.
const node = new ClapPeer(1001, 'A'); node.connect({ host: '127.0.0.1', port: 1002 });
Event | Method That Generates the Message | Message Type | Description |
---|---|---|---|
DM | publish | Plain text message | Handled as a regular, unencrypted message. |
CRYPTO_DM | send | Encrypted message | Sent and received in an encrypted form. |
Sie können das ERROR-Ereignis abonnieren, um alle Fehler zu behandeln.
const node = new ClapPeer(1002, 'A', { host: '127.0.0.1', port: 1002 });
Der Parameter messageError.message kann eine der folgenden Meldungen enthalten:
TIMEOUT_ERROR_MESSAGE:
Bei der Nachbarüberprüfung ist nach ${TIMEOUT_DURATION / 1000} Sekunden
TIMEOUT_ERROR_REQUEST:
Zeitüberschreitung beim Abrufen des RSA-Schlüssels.
DECRYPT_ERROR:
Die Nachricht konnte nicht entschlüsselt werden.
SEND_ERROR:
Die Daten konnten nicht gesendet werden.
PUBLISH_ERROR:
Die Daten konnten nicht veröffentlicht werden.
Das obige ist der detaillierte Inhalt vonTCP-basierte PDatenübertragung. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!