.gitignore | ||
README.md |
rage-eventbus simplifies two-way communication between the RAGE Multiplayer server, client, and browser instances.
It can be used as a full-on replacement for RAGE's built-in mp.events
API, providing consistency and clarity.
Examples
Server to Client
Situation: The server wants to ask a specific player if they are currently running.
Server-side
const rbus = require('rage-eventbus');
const player = mp.players.at(0); // or any player object
rbus.sendClient(player, 'getIsRunning').then(running => {
if(running){
console.log('The player is running!');
}else{
console.log('The player is not running!');
}
});
// or even just this inside an async function:
const isRunning = await rbus.sendClient(player, 'getIsRunning');
Client-side
const rbus = require('rage-eventbus');
rbus.on('getIsRunning', () => mp.players.local.isRunning);
That's it! No extra code to sort out who is asking for what, or setting up multiple events on each side just to send a single piece of data back to the caller.
CEF to Server
Situation: A CEF instance wants a list of all vehicle license plates directly from the server.
Browser
const rbus = require('rage-eventbus');
rbus.sendServer('getAllLicensePlates').then(plates => {
alert(plates.join(', '));
});
Client-side
// even if not using rbus on the client, it must be required somewhere before CEF can send any events
require('rage-eventbus');
Server-side
const rbus = require('rage-eventbus');
rbus.on('getAllLicensePlates', () => {
return mp.vehicles.toArray().map(vehicle => vehicle.plate);
});
With rage-eventbus
, CEF can directly communicate with the server and vice-versa.