Add API documentation
This commit is contained in:
parent
a0e54ebd2f
commit
845a910117
255
README.md
255
README.md
@ -22,6 +22,8 @@ From here, you can simply require the package in any RAGE context:
|
||||
|
||||
```javascript
|
||||
const rpc = require('rage-rpc');
|
||||
|
||||
rpc.register('hi', () => 'hello!');
|
||||
```
|
||||
|
||||
#### Option 2
|
||||
@ -30,6 +32,8 @@ In the `dist/` folder of this repository is a single minified JS file that you c
|
||||
|
||||
```javascript
|
||||
const rpc = require('./rage-rpc.min.js');
|
||||
|
||||
rpc.register('hi', () => 'hello!');
|
||||
```
|
||||
|
||||
#### Option 3 (Browser Only)
|
||||
@ -156,4 +160,253 @@ log("Hello again!").then(() => {
|
||||
});
|
||||
```
|
||||
|
||||
Note that once any side of the game registers a procedure, any context can immediately start accessing it. You could call `rpc.callServer('log', message);` from any CEF instance or anywhere in the client without any further setup.
|
||||
**Note:** Once any side of the game registers a procedure, any context can immediately start accessing it. You could call `rpc.callServer('log', message);` from any CEF instance or anywhere in the client without any further setup.
|
||||
|
||||
## API
|
||||
|
||||
This library is universal to RAGE, which means you can load the same package into all 3 contexts: browser, client JS, and server JS.
|
||||
|
||||
There are only 7 functions that you can use almost anywhere around your game. However, depending on the current context, the usage of some functions might differ slightly.
|
||||
|
||||
### Universal
|
||||
|
||||
#### register(name, callback)
|
||||
|
||||
Registers a procedure in the current context.
|
||||
|
||||
The return value of the `callback` will be sent back to the caller, even if it fails. If a [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) is returned, it will finish before returning its result or error to the caller.
|
||||
|
||||
**The return value must be JSON-able in order to be sent over the network.** This doesn't matter if the procedure call is local.
|
||||
|
||||
##### Parameters
|
||||
|
||||
* `name` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The unique identifier, relative to the current context, of the procedure.
|
||||
* `callback` [function](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Function) - The procedure. This function will receive 2 arguments.
|
||||
* `args` - The arguments that were provided by the caller. This parameter's type will be the same that was sent by the caller. `undefined` if no arguments were sent.
|
||||
* `info` [object](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object) - Various information about the caller.
|
||||
* `id` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The internal ID used to keep track of this request.
|
||||
* `environment` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The caller's environment. Can be `cef`, `client`, or `server`.
|
||||
* `player` [Player](https://wiki.rage.mp/index.php?title=Server-side_functions#Player) - The caller. *Only exists in the server context if remotely called from `cef` or `client`.*
|
||||
|
||||
##### Examples
|
||||
|
||||
```javascript
|
||||
rpc.register('hello', () => 'hi!');
|
||||
```
|
||||
|
||||
Returns `hi!` to the caller.
|
||||
|
||||
---
|
||||
|
||||
```javascript
|
||||
rpc.register('getUser', async (id) => {
|
||||
const user = await someLongOperationThatReturnsUserFromId(id);
|
||||
return user;
|
||||
});
|
||||
```
|
||||
|
||||
Waits for the returned [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) to finish before returning the resolved user to the caller.
|
||||
|
||||
---
|
||||
|
||||
```javascript
|
||||
rpc.register('echo', (message, info) => {
|
||||
console.log(`${info.player.name} via ${info.environment}: ${message}`);
|
||||
});
|
||||
```
|
||||
|
||||
*Server-side example only.* The passed argument will be logged to the console along with the caller's name and the environment which they called from.
|
||||
|
||||
#### unregister(name)
|
||||
|
||||
Unregisters a procedure from the current context. It will no longer take requests unless it is re-registered.
|
||||
|
||||
* `name` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The unique identifier, relative to the current context, of the procedure.
|
||||
|
||||
#### call(name, args)
|
||||
|
||||
Calls a procedure that has been registered in the current context.
|
||||
|
||||
* `name` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The name of the previously registered procedure.
|
||||
* `args?` - Optional arguments to pass to the procedure. Can be of any type, since `call` does not traverse the network.
|
||||
|
||||
##### Example
|
||||
|
||||
```javascript
|
||||
rpc.register('hi', () => 'hello!');
|
||||
|
||||
rpc.call('hi').then(result => {
|
||||
// result = hello!
|
||||
console.log(result);
|
||||
}).catch(err => {
|
||||
console.error(err);
|
||||
});
|
||||
```
|
||||
|
||||
###### Returns [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) resolving or failing due to the procedure's result. If the procedure called does not exist, `PROCEDURE_NOT_FOUND` will be thrown.
|
||||
|
||||
#### callServer(name, args)
|
||||
|
||||
Calls a procedure that has been registered on the server.
|
||||
|
||||
* `name` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The name of the previously registered procedure.
|
||||
* `args?` - Optional arguments to pass to the procedure. Must be JSON-able if the current context is not the server. Use an array or object to pass multiple arguments.
|
||||
|
||||
##### Example
|
||||
|
||||
Server-side:
|
||||
```javascript
|
||||
rpc.register('getWeather', () => mp.world.weather);
|
||||
```
|
||||
|
||||
Client-side OR Browser OR Server:
|
||||
```javascript
|
||||
rpc.callServer('getWeather').then(weather => {
|
||||
mp.gui.chat.push(`The current weather is ${weather}.`);
|
||||
}).catch(err => {
|
||||
// handle error
|
||||
});
|
||||
```
|
||||
|
||||
###### Returns [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) resolving or failing due to the procedure's result. If the procedure called does not exist, `PROCEDURE_NOT_FOUND` will be thrown.
|
||||
|
||||
### Server-side
|
||||
|
||||
#### callClient(player, name, args)
|
||||
|
||||
Calls a procedure that has been registered on a specific client.
|
||||
|
||||
* `player` [Player](https://wiki.rage.mp/index.php?title=Server-side_functions#Player) - The player to call the procedure on.
|
||||
* `name` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The name of the registered procedure.
|
||||
* `args?` - Optional arguments to pass to the procedure. Must be JSON-able. Use an array or object to pass multiple arguments.
|
||||
|
||||
##### Example
|
||||
|
||||
Client-side:
|
||||
```javascript
|
||||
rpc.register('toggleChat', toggle => {
|
||||
mp.gui.chat.show(toggle);
|
||||
});
|
||||
```
|
||||
|
||||
Server-side:
|
||||
```javascript
|
||||
mp.players.forEach(player => {
|
||||
rpc.callClient(player, 'toggleChat', false);
|
||||
});
|
||||
```
|
||||
|
||||
###### Returns [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) resolving or failing due to the procedure's result. If the procedure called does not exist, `PROCEDURE_NOT_FOUND` will be thrown.
|
||||
|
||||
#### callBrowsers(player, name, args)
|
||||
|
||||
Calls a procedure that has been registered in any CEF instance on a specific client.
|
||||
|
||||
Any CEF instance can register the procedure. The client will iterate through each instance and call the procedure on the first instance that it exists on.
|
||||
|
||||
* `player` [Player](https://wiki.rage.mp/index.php?title=Server-side_functions#Player) - The player to call the procedure on.
|
||||
* `name` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The name of the registered procedure.
|
||||
* `args?` - Optional arguments to pass to the procedure. Must be JSON-able. Use an array or object to pass multiple arguments.
|
||||
|
||||
##### Example
|
||||
|
||||
Browser:
|
||||
```javascript
|
||||
rpc.register('toggleHUD', toggle => {
|
||||
// if jQuery is your thing
|
||||
$('#hud').toggle(toggle);
|
||||
});
|
||||
```
|
||||
|
||||
Server-side:
|
||||
```javascript
|
||||
mp.players.forEach(player => {
|
||||
rpc.callClient(player, 'toggleChat', false);
|
||||
});
|
||||
```
|
||||
|
||||
###### Returns [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) resolving or failing due to the procedure's result. If the procedure called does not exist, `PROCEDURE_NOT_FOUND` will be thrown.
|
||||
|
||||
### Client-side
|
||||
|
||||
#### callBrowser(browser, name, args)
|
||||
|
||||
Calls a procedure that has been registered in a specific CEF instance.
|
||||
|
||||
* `browser` [Browser](https://wiki.rage.mp/index.php?title=Client-side_functions#Browser) - The browser to call the procedure on.
|
||||
* `name` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The name of the registered procedure.
|
||||
* `args?` - Optional arguments to pass to the procedure. Must be JSON-able. Use an array or object to pass multiple arguments.
|
||||
|
||||
##### Example
|
||||
|
||||
Browser:
|
||||
```javascript
|
||||
rpc.register('getInputValue', () => {
|
||||
// if jQuery is your thing
|
||||
return $('#input').val();
|
||||
});
|
||||
```
|
||||
|
||||
Client-side:
|
||||
```javascript
|
||||
const browser = mp.browsers.at(0);
|
||||
|
||||
rpc.callBrowser(browser, 'getInputValue').then(value => {
|
||||
mp.gui.chat.push(`The CEF input value is: ${value}`);
|
||||
}).catch(err => {
|
||||
// handle errors
|
||||
});
|
||||
```
|
||||
|
||||
###### Returns [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) resolving or failing due to the procedure's result. If the procedure called does not exist, `PROCEDURE_NOT_FOUND` will be thrown.
|
||||
|
||||
### CEF or Client-side
|
||||
|
||||
#### callBrowsers(name, args)
|
||||
|
||||
Calls a procedure that has been registered in any CEF instance on a specific client.
|
||||
|
||||
Any CEF instance can register the procedure. The client will iterate through each instance and call the procedure on the first instance that it exists on.
|
||||
|
||||
* `name` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The name of the registered procedure.
|
||||
* `args?` - Optional arguments to pass to the procedure. Must be JSON-able. Use an array or object to pass multiple arguments.
|
||||
|
||||
##### Example
|
||||
|
||||
Browser:
|
||||
```javascript
|
||||
rpc.register('toggleHUD', toggle => {
|
||||
// if jQuery is your thing
|
||||
$('#hud').toggle(toggle);
|
||||
});
|
||||
```
|
||||
|
||||
Client-side OR Browser:
|
||||
```javascript
|
||||
rpc.callBrowsers('toggleChat', false);
|
||||
```
|
||||
|
||||
###### Returns [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) resolving or failing due to the procedure's result. If the procedure called does not exist, `PROCEDURE_NOT_FOUND` will be thrown.
|
||||
|
||||
#### callClient(name, args)
|
||||
|
||||
Calls a procedure that has been registered on the local client.
|
||||
|
||||
* `name` [string](https://developer.mozilla.org/docs/Web/JavaScript/Reference/Global_Objects/String) - The name of the registered procedure.
|
||||
* `args?` - Optional arguments to pass to the procedure. Must be JSON-able if the current context is not this client. Use an array or object to pass multiple arguments.
|
||||
|
||||
##### Example
|
||||
|
||||
Client-side:
|
||||
```javascript
|
||||
rpc.register('toggleChat', toggle => {
|
||||
mp.gui.chat.show(toggle);
|
||||
});
|
||||
```
|
||||
|
||||
Client-side OR Browser:
|
||||
```javascript
|
||||
rpc.callClient('toggleChat', false);
|
||||
```
|
||||
|
||||
###### Returns [Promise](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Promise) resolving or failing due to the procedure's result. If the procedure called does not exist, `PROCEDURE_NOT_FOUND` will be thrown.
|
Reference in New Issue
Block a user