ClapPeer - ノード間のメッセージ交換をサポートするノードの分散ネットワークを作成するためのライブラリです。ノードはプレーンなメッセージと暗号化されたメッセージの両方を交換できます。
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' });
ノードに接続するには、.connect メソッドを使用するか、ノードの作成時に構成オブジェクトを渡すという 2 つの方法のいずれかを使用できます。コードをどのように構造化したいかに基づいて方法を選択してください。以下に 2 つのアプローチがあります:
const node = new ClapPeer(1001, 'A'); node.connect({ host: '127.0.0.1', port: 1002 });
ここでは、ノードを作成し、.connect() メソッドを呼び出して、ホストとポートのパラメーターを渡します。これにより、ノードの作成と接続ロジックを分離できます。
const node = new ClapPeer(1002, 'A', { host: '127.0.0.1', port: 1002 });
この場合、ClapPeer オブジェクトの作成時に接続パラメータを直接渡します。この方法は、ノードの作成後すぐに接続する必要がある場合に便利です。
send メソッドは、暗号化されたメッセージを送信するために使用されます。送信する前に、ターゲット ノードの公開キーが利用可能かどうかを確認します。
例:
node.send(node_2.nodeId, { text: 'Hello, secure world!' }).catch(error => { console.log(error); });
パブリッシュ メソッドは暗号化せずにメッセージを送信します。指定されたノードにデータを転送するだけです。
例:
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 | ❌ | ❌ | ❌ | ✅ |
ノードはイベントをサブスクライブして、プレーンなメッセージと暗号化されたメッセージの両方を処理できます。
DM タイプのメッセージは、別のノードがパブリッシュ メソッドを呼び出すときに生成されます。これらのメッセージは暗号化されず送信されます。
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' });
CRYPTO_DM タイプのメッセージは、send メソッドが別のノードによって呼び出されたときに生成されます。これらのメッセージは暗号化形式で受信されます。
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. |
ERROR イベントをサブスクライブして、すべてのエラーを処理できます。
const node = new ClapPeer(1002, 'A', { host: '127.0.0.1', port: 1002 });
messageError.message パラメーターには、次のメッセージのいずれかが含まれる場合があります:
TIMEOUT_ERROR_MESSAGE:
${TIMEOUT_DURATION / 1000} 秒後に近隣チェックがタイムアウトしました
TIMEOUT_ERROR_REQUEST:
RSA キーの取得がタイムアウトしました。
DECRYPT_ERROR:
メッセージを復号化できません。
SEND_ERROR:
データの送信に失敗しました。
PUBLISH_ERROR:
データの公開に失敗しました。
以上がTCPベースのPdata送信の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。