1.0.1 • Published 1 year ago

@j-o-r/filesocket v1.0.1

Weekly downloads
-
License
Apache-2.0
Repository
-
Last release
1 year ago

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 the FSClient class for the client.
  • lib/FSServer.js: Defines the FSServer class for the server.
  • lib/FileSocket.js: Imports and exports the FSServer and FSClient 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.

1.0.1

1 year ago

1.0.0

1 year ago