js-libp2p-http
is a lightweight HTTP-like transport built on top of libp2p. It allows you to send HTTP-like requests over libp2p, with easy handler registration and response handling.
To install js-libp2p-http
, choose your preferred package manager:
- Using npm:
npm install js-libp2p-http
- Using yarn:
yarn add js-libp2p-http
- Using pnpm:
pnpm add js-libp2p-http
import Libp2pHttp from 'js-libp2p-http';
First, you'll need to create and initialize a libp2p node:
import { createLibp2p } from 'libp2p';
const node = await createLibp2p({...options});
Once you have a libp2p node, you can initialize js-libp2p-http
:
const libp2pHttp = Libp2pHttp.init(node);
Handlers respond to specific protocols. Define them and bind to specific routes:
libp2pHttp.registerHandler("/your-protocol-endpoint", async (data) => {
// Process the incoming request data...
return { data: "Response Data" };
});
Before sending a request to a handler, ensure that the requesting node dials the handler node:
await node.dial(multiaddr("HANDLER_NODE_MULTIADDR"));
Send a request using the send
method:
const response = await libp2pHttpRequester.get(`libp2p://HANDLER_NODE_PEER_ID/your-protocol-endpoint`, { data: "Request data" });
For a clearer explanation and practical demonstrations of various use cases, please check out the examples
folder in the package/repository. It provides comprehensive examples to help you understand how to effectively use js-libp2p-http
.
Always handle errors gracefully:
try {
const response = await libp2pHttpRequester.get(`libp2p://HANDLER_PEER_ID/your-protocol-endpoint`, "Your request data here");
// Handle the response
} catch (error) {
console.error("Failed to send request:", error);
}
- Always catch errors from requests to handle them gracefully.
- Ensure your handlers return data in the format expected by requesters.
- Remember to dial a node before sending a request to it.
- Ensure both handler and requester nodes are running and reachable.
We value feedback from the community! If you encounter any issues or have suggestions, please create an issue on GitHub.
js-libp2p-http
is released under the MIT License.