1.0.0 • Published 2 years ago

plugboard.io v1.0.0

Weekly downloads
-
License
ISC
Repository
-
Last release
2 years ago

Plugboard.io

a better way of writing websockets

Plugboard.io is a framework for dynamically loading and managing Socket.IO event handlers from a specified folder, allowing developers to define and handle custom events in a modular way. It abstracts away the low-level Socket.IO server setup and event handling logic, making it easier to organize and extend event-driven functionality in a Socket.IO application.

Features

  • File based and modular approach.
  • Organized incoming sockets into files.
  • Each incoming request is a class.

Use it

npm i plugboard.io

./index.ts

import { Plugboard } from "plugboard.io";

const plugboard = new Plugboard('dist/sockets', {
    cors: { origin: "*" },
});

plugboard.onConnection = (socket) => {
    socket.emit('connected');
}

plugboard.start(3000);

Initialize a new instance of the class and pass the following:

  • name of the folder where incoming sockets are stored
  • ServerOptions for Server imported from socket.io

Each incoming socket connection is stored inside the specified folder as a file with the same name as of the associated socket request.

Lets say in client side code:

socket.emit("search", "jhon");

./socket/search.ts

import { ASocket } from "plugboard.io";

export default class extends ASocket<[query: string]> {
    async run() {
        if (!this.args) return;

        // query: string
        const [query] = this.args;

        const result = await searchFromTheDb(query);
        this.socket?.emit('search-result', result);
    }
}

Every request is a class extending ASocket. The type passed in the generic is that of the payload coming with the request.

"this" of a request:

this {
    io?: Server
    socket?: Socket
    args?: T
}
1.0.0

2 years ago

0.0.7

2 years ago

0.0.6

2 years ago

0.0.5

2 years ago

0.0.4

2 years ago

0.0.3

2 years ago

0.0.2

2 years ago

0.0.1

2 years ago