Sand
Sand is a very simple and lightweight implementation of the core node TCP socket, adding some usefull features like client management, packet separation, handshake and event oriented clients like socket.io.
Install
$ npm i -s sand-socket
Usage
The usage is very simple and inspired on socket.io, but you are going to use write instead of emit.
const SandSocket = ; const server = ; // Listening for a new client connectionserver; // Starting server on the port 3000server;
Server options
You can set options to the node server setting the serverOptions parameter in the Sand server options when creating it.
const SandSocket = ; const options = {};const server = serverOptions: options ;
Delimiters
Sand packets are text-oriented, by default it just sends a string to the client using "\n" as the delimiter between packets, and "#e#" as the delimiter between event name and message. If you prefer, you can set any other delimiter by passing it to the socket constructor.
const SandSocket = ; const packetDelimiter = "packetEndsHere";const eventDelimiter = "eventNameEndsHere"; const server = null packetDelimiter eventDelimiter;
TLS
Sand socket supports node core TLS implementation.
const fs = ;const SandSocket = ; const options = key: fs cert: fs; const server = tls: true serverOptions: options ;
Verbose logging
In case you want to see what is happening behind the scenes, just activate the verbose log.
const SandSocket = ;const server = ;serververboseLog = true;
Concerns
The performance was not enough tested yet, and as long as it is a TCP socket and is text-based, it may not be the best option for an application that requires a lot of packets per second, like an action game.
Roadmap
- Make logs optional. (Done)
- Find a more performatic way to separate event and message.
These are what I'm planning to implement in the short-term, in case you have a suggestion feel free to contact me or open an issue :)