@armoredfuzzball/fjtp
v2.0.2
Published
Node.js interprocess communication with JSON
Maintainers
Readme
Test conducted with FJTP 2.0.1, Fastify 5.7.4, Node.js v24.14.0
FJTP is best suited for scenarios where you need high bandwidth and low latency with small to medium JSON payloads (for example, a backend authentication service, which just transmits tokens or user credentials to other services).
import { FJTPServer } from 'fjtp';
const SOCKET_PATH = './secure_directory/my_socket.sock';
const options = { clientOptions: { UDSInterfaceOptions: { payloadCodecOptions: { encoding: 'ascii' } } } };
const server = new FJTPServer(options);
// Handle incoming connections
server.onConnection((socket) => {
console.log('Client connected');
// Handle incoming messages
socket.onRequest((message) => {
console.log('Received message:', message);
return { anything: 'Hello from server!' };
//or throw an error to the client
throw new Error("Something went wrong!");
});
// Handle socket disconnect
socket.on('close', () => {
console.log('Client disconnected');
});
// Handle socket errors
socket.on('error', (error) => {
console.error('Socket error:', error);
});
});
// Listen for incoming connections
server.listen(SOCKET_PATH, () => console.log(`Server listening on ${SOCKET_PATH}`));import { FJTPClient } from 'fjtp';
const SOCKET_PATH = './secure_directory/my_socket.sock';
const options = { UDSInterfaceOptions: { payloadCodecOptions: { encoding: 'ascii' } } };
const socket = new FJTPClient(options);
// Handle socket errors
socket.on('error', (error) => {
console.error('Socket error:', error);
});
// Connect to the server
socket.connect(SOCKET_PATH, () => {
console.log("Connected to the server");
// Send a message and wait for a response
socket.rpc({ anything: 'Hello from client!' }, 3000) //custom timeout ms
.then(response => {
console.log('Received response:', response);
})
.catch(error => {
console.error('RPC error:', error);
});
});