https://github.com/indicio-tech/json-rpc-api-proxy
Quickly and easily expose an API over JSON-RPC
https://github.com/indicio-tech/json-rpc-api-proxy
Last synced: 2 months ago
JSON representation
Quickly and easily expose an API over JSON-RPC
- Host: GitHub
- URL: https://github.com/indicio-tech/json-rpc-api-proxy
- Owner: Indicio-tech
- License: apache-2.0
- Created: 2023-11-14T02:47:11.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-11-16T21:08:47.000Z (over 1 year ago)
- Last Synced: 2025-04-01T15:06:23.485Z (2 months ago)
- Language: TypeScript
- Size: 157 KB
- Stars: 0
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# JSON-RPC API Proxy Library
This library provides a flexible and easy-to-use implementation for setting up JSON-RPC servers with notifications. It features `JsonRpcApiProxy`, a class that facilitates creating JSON-RPC interfaces over various transport layers. The library includes built-in support for TCP and Unix socket transport with `TCPSocketServer` and `UnixSocketServer`, respectively.
## Features
- **JSON-RPC Server and Client**: Implement JSON-RPC 2.0 protocol for both server and client. This enables responding to requests as well as sending asynchronous notifications.
- **Custom Transport Layer**: Use different transport layers for communication.
- **Middleware Support**: Add custom middleware (logging and exception handling enabled by default).
- **Basic Transports Included**: Built-in `TCPSocketServer` and `UnixSocketServer`.
- **Extensibility**: Easily extendable for other transport layers like WebSocket, HTTP, etc.## Installation
You can install the library using npm:
```bash
npm install json-rpc-api-proxy
```## Usage
### Creating a JSON-RPC Server and Client with TCP Transport
Below is a basic example of using `JsonRpcApiProxy` with a TCP socket server.
```typescript
import { JsonRpcApiProxy, TCPSocketServer } from 'json-rpc-api-proxy';// Configure the TCP server
const serverConfig = {
host: 'localhost',
port: 3000,
};// Create a TCP socket server
const tcpSocketServer = new TCPSocketServer(serverConfig);// Create an instance of JsonRpcApiProxy with the TCP server
const jsonRpcApiProxy = new JsonRpcApiProxy(tcpSocketServer);// Add a method to the RPC interface
jsonRpcApiProxy.rpc.addMethod('getGreeting', async params => {
return `Hello, ${params.name || 'World'}!`;
});// Start the server
jsonRpcApiProxy.start();// ...
// Asynchronously send notifications
jsonRpcApiProxy.rpc.client.notify('someEvent', { message: 'Notification!' });
```## Documentation
For detailed documentation, refer to the JSDocs on the classes provided in the repository.
## Contributing
Contributions are welcome! Please read our contributing guidelines in `CONTRIBUTING.md` before submitting pull requests.
## License
This library is licensed under the [Apache 2.0 License](LICENSE).
## Support
If you have any issues or feature requests, please open an issue in the GitHub repository.