@ugti-india/dmp-native
v1.0.0
Published
Full DMP Protocol Client for React Native and JavaScript
Downloads
10
Maintainers
Readme
@ugti/dmp-native SDK
A full-featured DMP (Dhamma Message Protocol) client for React Native and JavaScript environments. Supports DMP/1.x ephemeral connections and DMP/2.0 high-performance multiplexing.
Installation
npm install @ugti/dmp-nativeUsage in React Native
Since React Native does not provide a native net module, you must provide a SocketAdapter implementation. Below is an example using react-native-tcp-socket.
1. Implement the Socket Adapter
import TcpSocket from 'react-native-tcp-socket';
import { DmpSocketAdapter, Uint8ArrayBuilder } from 'dmp-native';
class RNSocketAdapter extends DmpSocketAdapter {
constructor(host, port, options) {
super();
this.host = host;
this.port = port;
this.options = options;
this.buffer = new Uint8ArrayBuilder();
this.socket = null;
}
async connect() {
return new Promise((resolve, reject) => {
this.socket = TcpSocket.createConnection({
port: this.port,
host: this.host,
tls: this.options.isSecure,
// ... TLS options
}, () => resolve());
this.socket.on('data', (data) => this.buffer.add(data));
this.socket.on('error', reject);
});
}
write(data) {
this.socket.write(data);
}
async flush() {
// TcpSocket writes are immediate or handled by the OS
return Promise.resolve();
}
read() {
const bytes = this.buffer.toBytes();
this.buffer.chunks = [];
this.buffer.length = 0;
return bytes;
}
// Implement readExactly and waitForDataOrTimeout using the buffer...
}2. Initialize the Client
import { DmpClient } from 'dmp-native';
const client = new DmpClient({
socketFactory: async (host, port, options) => {
const adapter = new RNSocketAdapter(host, port, options);
await adapter.connect();
return adapter;
}
});
// Use it!
const response = await client.seek('dmp://example.com/api/v1');
console.log(response.body);Features
- Protocol Parity: Direct port of the robust Dart SDK.
- Multiplexing: Seamless upgrade to DMP/2.0 for high-frequency requests.
- Binary Efficient: Uses
Uint8Arrayfor all protocol operations. - Environment Agnostic: Works in Node.js, React Native, or Web (with a WebSocket proxy).
