Home

Awesome

abstract-socket-rs

The ffi implemention of abstract-socket based on ffi-rs

Features

Support platforms

How to use

The api interface is the same as abstract-socket.

Examples

Server:

// abstract echo server
const abs = require('abstract-socket-rs');

const server = abs.createServer(function(c) { //'connection' listener
  console.log('client connected');
  c.on('end', function() {
    console.log('client disconnected');
  });
  c.write('hello\r\n');
  c.pipe(c);
});
server.listen('\0foo');

Client:

const abs = require('abstract-socket-rs');

var client = abs.connect('\0foo', function() { //'connect' listener
    console.log('client connected');
});

client.on('data', function(data) {
    console.log(data.toString());
});

process.stdin.setEncoding('utf8');
process.stdin.on('readable', function() {
    const chunk = process.stdin.read();
    if (chunk !== null)
        client.write(chunk);
});

API

abs.createServer(connectionListener)

Returns a new AbstractSocketServer object. listen can be called on it passing the name of the abstract socket to bind to and listen, it follows the API used for normal Unix domain sockets. NOTE: you must prepend the path with the NULL byte ('\0') to indicate it's an abstract socket.

Emits an error if the socket(2) system call fails.

AbstractSocketServer.listen(name, [callback]

Binds the server to the specified abstract socket name.

Emits an error if the bind(2) system call fails, or the given name is invalid.

This function is asynchronous. When the server has been bound, 'listening' event will be emitted. the last parameter callback will be added as an listener for the 'listening' event.

abs.connect(name, connectListener)

Creates a connection to the given path in the abstract domain. NOTE: you must prepend the path with the NULL byte ('\0') to indicate it's an abstract socket.

Returns a new net.Socket object.

Emits an error if the socket(2) or connect(2) system calls fail, or the given name is invalid.