# Rage-FW-RPC is an all-in package with asynchronous RPC implementation for RageMP servers in JS/TS # Installation ``` shell npm i rage-fw-rpc ``` ```shell pnpm i rage-fw-rpc ``` ```shell yarn add rage-fw-rpc ``` Import installed package and initialize rpc: ```ts // lib/rpc.js import { Rpc } from 'rage-fw-rpc' export const rpc = new Rpc(/* options */) ``` # Features - Type-safe events via [TS generics](https://www.typescriptlang.org/docs/handbook/2/generics.html), avoiding type wrappers - Built-in logging options for each environment - Error-safe developer mode for browser - Calls can receive response from called environments via Promises (browser -> server -> browser, etc.) - Actual human-readable errors # Docs *Extended version with details coming soon* ## register Registers a callback function for a specified event ```ts rpc.register('playerJoin', (player) => { console.log(`Connected: ${player.socialClub}`) }) ``` ## unregister Unregisters callback function for a specified event ```ts rpc.unregister('playerDamage') ``` ## callClient Calls a client-side event from server or browser From browser: ```ts rpc.callClient('updatePlayerData', ['argument']).then(response => { console.log(`Received: ${response}`) }) ``` From server (requires player): ```ts rpc.callClient(player, 'updatePlayerData', ['argument']).then(response => { console.log(`Received: ${response}`) }) ``` ## callServer Calls a server-side event from browser or client ```ts rpc.callServer('updatePlayerData', ['argument']).then(response => { console.log(`Received: ${response}`) }) ``` ## callBrowser Calls a server-side event from browser or client From client: ```ts rpc.callBrowser('updatePlayerData', ['argument']).then(response => { console.log(`Received: ${response}`) }) ``` From client (requires player): ```ts rpc.callBrowser(player, 'updatePlayerData', ['argument']).then(response => { console.log(`Received: ${response}`) }) ``` ## call Calls an event in current environment ```ts rpc.call('triggerSomething').then(response => { console.log(`Received: ${response}`) }) ```