@j-o-r/filesocket
v1.0.1
Published
A simple implementation of a Unix domain socket server and client.
Downloads
3
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 --save
Usage
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 test
The tests are defined in the socket.js
file and verify the basic functionality of the server and client.
File Structure
lib/FSClient.js
: Defines theFSClient
class for the client.lib/FSServer.js
: Defines theFSServer
class for the server.lib/FileSocket.js
: Imports and exports theFSServer
andFSClient
classes.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.