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); });
게시 방법은 암호화하지 않고 메시지를 보냅니다. 단순히 데이터를 지정된 노드로 전달합니다.
예:
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 유형의 메시지는 다른 노드에서 전송 메소드를 호출할 때 생성됩니다. 이러한 메시지는 암호화된 형식으로 수신됩니다.
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:
데이터 전송에 실패했습니다.
게시_오류:
데이터 공개에 실패했습니다.
위 내용은 TCP 기반 Pdata 전송의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!