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 方法或在建立節點時傳遞配置物件。根據您想要建立程式碼的方式選擇方法。以下是兩種方法:
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); });
publish 方法發送訊息時不加密。它只是將資料轉發到指定的節點。
範例:
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 | ❌ | ❌ | ❌ | ✅ |
節點可以訂閱事件來處理明文和加密訊息。
當另一個節點呼叫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' });
當另一個節點呼叫 send 方法時,會產生 CRYPTO_DM 類型的訊息。這些訊息以加密形式接收。
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 金鑰檢索逾時。
解密錯誤:
無法解密訊息。
SEND_ERROR:
資料發送失敗。
PUBLISH_ERROR:
發布數據失敗。
以上是基於TCP的Pdata傳輸的詳細內容。更多資訊請關注PHP中文網其他相關文章!