@j-o-r/filesocket
v1.0.1
Published
A simple implementation of a Unix domain socket server and client.
Maintainers
Readme
README.md
FileSocket
FileSocket is a simple implementation of a Unix domain socket server and client using Node.js. This project demonstrates how to create a basic inter-process communication (IPC) mechanism using Unix domain sockets. The server listens for incoming connections and processes messages, while the client sends messages to the server and handles responses.
Features
- Simple and lightweight Unix domain socket server and client.
- Asynchronous communication using Promises.
- Error handling and cleanup mechanisms.
Prerequisites
- Node.js (version 20 or higher)
Installation
npm i @j-o-r/filesocket --saveUsage
Server
The server listens on a Unix domain socket file and processes incoming messages. It uses a custom handler function to process the messages and send responses.
Example
import FS from '@j-o-r/filesocket';
const socketFile = '/path/to/socket/file.sock';
const server = new FS.server(socketFile, (message) => {
console.log('Received message:', message);
server.write(`${message}: Response from server`);
});
// To close the server
// server.close();Client
The client connects to the Unix domain socket file and sends messages to the server. It waits for the server's response and handles it accordingly.
Example
import FS from '@j-o-r/filesocket';
const socketFile = '/path/to/socket/file.sock';
const client = new FS.client(socketFile);
client.write('Hello, server!')
.then(response => {
console.log('Received response:', response);
})
.catch(error => {
console.error('Error:', error);
});Running Tests
The project includes test cases using the uvu test framework. To run the tests, use the following command:
npm testThe tests are defined in the socket.js file and verify the basic functionality of the server and client.
File Structure
lib/FSClient.js: Defines theFSClientclass for the client.lib/FSServer.js: Defines theFSServerclass for the server.lib/FileSocket.js: Imports and exports theFSServerandFSClientclasses.scenarios/socket.js: Contains test cases for the server and client.
License
This project is licensed under the APACHE 2.0 License. See the LICENSE file for details.
