Rpc integration + type fixes #3
93
rpc/readme.md
Normal file
93
rpc/readme.md
Normal file
@ -0,0 +1,93 @@
|
||||
# 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}`)
|
||||
})
|
||||
```
|
@ -263,7 +263,7 @@ class Rpc extends Wrapper {
|
||||
}
|
||||
|
||||
/**
|
||||
* Calls a server-side event from server or client
|
||||
* Calls a server-side event from browser or client
|
||||
*
|
||||
* @template Arguments - An array of argument types to be passed to the server event
|
||||
* @template EventName - A string representing the server event name or union of names
|
||||
@ -438,8 +438,8 @@ class Rpc extends Wrapper {
|
||||
* @returns {Promise<Return>} A promise resolving to the return value of the event
|
||||
*
|
||||
* @example
|
||||
* // Calls an event on browser without specifying a player
|
||||
* callBrowser<[], string, number>('getSomething').then(response => {
|
||||
* // Calls an event in current environment
|
||||
* call<[], string, number>('getSomething').then(response => {
|
||||
* console.log(`Received: ${response}`) // ^ number
|
||||
* })
|
||||
*/
|
||||
|
Loading…
Reference in New Issue
Block a user