Socket
Book a DemoInstallSign in
Socket

rib-server

Package Overview
Dependencies
Maintainers
1
Versions
46
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

rib-server

A framework for a Realtime Integrated Backend

latest
Source
npmnpm
Version
2.0.8
Version published
Maintainers
1
Created
Source

Rib-Server GitHub license npm version

Rib-Server is the simplest way to create and horizontally scale a realtime backend. This should be coupled with rib-client to create a simple real-time application. Rib-Server allows you to call client-side functions directly from the server.

For the official github, please click here.

Example

let RibServer = require("rib-server").default
RibServer.startServer(5000, "This is much easier to program")

let myRib = new RibServer()
myRib.onConnect((client) => {
    //  call the client-side function sendMSG on all clients except the one that just connected
    myRib.clientFunctions.sendMSG("Someone else joined the party 🎊", { query: { _ribId: { $ne: client._ribId } }})

    // call the client-side function sendMSG for just the newly connected client
    myRib.clientFunctions.sendMSG("Welcome to this example 😃", { query: client })
})

function logMessage(msg) {
    console.log(msg)
}
logMessage.argTypes = ["string"]    //  validates client passed 1st parameter of type string

function add(x, y) {
    return x + y
}
add.argTypes = ["number", "number"]    //  validates client passed 1st & 2nd parameter of type number

myRib.exposeFunctions([logMessage, add])    // allows us to call add & logMessage functions from the client

Documentation

startServer: Static Function

const PORT = 5000
RibServer.startServer(PORT, `Started up on port ${PORT}`)

Starts up a server with a specified port and an optional message log.

setRedisUrl: Static Function

RibServer.setRedisUrl("//localhost:6379")

Link to a redis server. This is for horizontal scaling your application. More can be found on the official redis documentation at https://redis.io/.

setRoute: Static Function

RibServer.setRoute("/", `${ __dirname }/Home/Client/index.html`)

Set a route for your application and the file to send with the associated route.

setClientFolder: Static Function

RibServer.setClientFolder(
    { path: "/Home/Client/", fullPath: `${ __dirname }/Home/Client/` }
)

Set static folder that can be accessed by a client.

setClientFolders: Static Function

RibServer.setClientFolders([
    { path: "/Home/Scripts/", fullPath: `${ __dirname }/Home/Scripts/` },
    { path: "/Home/Styles/", fullPath: `${ __dirname }/Home/Styles/` },
])

Set static folders that can be accessed by a client.

getApp: Static Function

const app = RibServer.getApp()

Get express app to use for middleware.

Instantiate Rib Server:

let myRib = new RibServer()

Note: The constructor takes two optional parameters. The first is the namespace that the client is trying to connect to(default is "/"). The second is whether or not you want to use the singleton design pattern(default is true).

onConnect: Function

myRib.onConnect((client) => {
    console.log(client)
})

Call a function after a client connects to the server. The object given is called a Persistent Client Object(PCO for short). This object is given each time a client calls a serverside function, and you can attach any data to this object and it will be persistent each time that client calls a server side function.

onDisconnect: Function

myRib.onDisconnect((client) => {
    console.log("A client disconnected 🙁")
})

Call a function when a client disconnects from the server. The callback value is a Persistent Client Object(PCO for short).

exposeFunction: Function

function add(x, y) {
    return x + y
}
add.argTypes = ["number", "number"]
myRib.exposeFunction(add)

Expose a server-side function that can be called from the rib-client instance. If argTypes is an added onto the function, aka functionName.argTypes = [], then this function's arguments will be validated before executing the function. Recognized argtypes are "undefined", "object", "boolean", "number", "string", "symbol", "null", and "any".

exposeFunctions: Function

myRib.exposeFunctions([
    add,
    subtract,
    multiply,
])

Expose an array of server-side functions that can be called with a rib-client instance. If argTypes is added onto a function, functionName.argTypes = [], then that function's arguments will be validated before executing the function. Recognized argtypes are "undefined", "object", "boolean", "number", "string", "symbol", "null", and "any".

concealFunction: Function

myRib.concealFunction(add)

Conceal a server-side function where it can no longer be accessed from all clients.

concealFunctions: Function

myRib.concealFunctions([
    add,
    subtract,
    multiply,
])

Conceal server-side functions where they can no longer be accessed from the client.

possibleClientFunctions: Function

myRib.possibleClientFunctions = ["logMessage"]

Gives ability to call your client-side functions with ease of mind by setting an array of possible client-side functions.

call: Function

app.call(
    "logMessage",
    "Log this message client side 👋🏻",
    { query: { locationId: client.locationId } },
)

The safest way to call a client function.

runPOF: Function

const res = await app.runPOF(
    "getName",
    [],
    { locationId: locationId.toString() },
)   //  run function getName on each PCO whose locationId matches specified

Run a persistent object function that matches a query

Keywords

backend

FAQs

Package last updated on 06 Jan 2020

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts