A pure JavaScript GBXRemote client.
Last updated 4 years ago by minigod .
MIT · Repository · Bugs · Original npm · Tarball · package.json
$ cnpm install gbxremote 
SYNC missed versions from official npm registry.


JavaScript (node.js) port of GbxRemote by Nadeo, which is built on Incutio XML-RPC Library.

Used to communicate with ManiaPlanet servers.

Note: The API may, or may not change!


npm install gbxremote

To Use

Look in /examples/ for all examples.

The following examples expects that var gbxremote = require('gbxremote').


To connect to a server, use var client = gbxremote.createClient(port, [host]);

Examples of ways to connect to the server:

// Connect with port only
var client = gbxremote.createClient(5000);
client.on('connect', onConnect);

// Connect with port and hostname
var client = gbxremote.createClient(5000, 'localhost');
client.on('connect', onConnect);

// Connect with port and ip
var client = gbxremote.createClient(5000, '');
client.on('connect', onConnect);

// Create client and connect explicitly
var client = new gbxremote.Client(5000, 'localhost');


Queries are sent to the server by calling client.query(method, [params]);
client.query returns a promise.

Queries before the connect event has been emitted will be queued and sent on connect!

See the full list of methods.

var client = gbxremote.createClient(5000);

client.on('connect', function() {

	// GetVersion does not take any params.
	client.query('GetVersion').then(function (res) {
		console.log('Server version:', res.join(', '));
	}).catch(function(err) {
		console.error('Error when querying server:', err);
	// GetPlayerInfo takes 2 parameters, 1 optional.
	// GetPlayerInfo(string login, [int compatibility])
	client.query('GetPlayerInfo', ['minigod']).then(function (res) {
		console.log('Player info:');
	}).catch(function (err) {
		console.error('Error getting player info:', err);




Event: connect()

Emitted when connection to the server is successfull.
Ready to receive queries!

var client = gbxremote.createClient(5000);

client.on('connect', function() {
	console.log('Connection successfull! Lets do some queries!');
	client.query('EnableCallbacks', true);

If there is a problem connecting, the 'connect' event will not be emitted, the 'error' event will be emitted with the exception.

Event: error(err)

Emitted when:

  • Socket errors (host is not listening on that port, loose connection, etc.)
  • Handshake fails (host is listening on that port, but its not a ManiaPlanet (GbxRemote 2) server)
var client = gbxremote.createClient(5000);

client.on('error', function(err) {
	console.error('Connection failed: ' + err);

Event: callback(method, params)

After sending EnableCallbacks(true) to the server, it will send you callbacks when stuff happend on the server.

  • ManiaPlanet.ServerStart
  • ManiaPlanet.ServerStop
  • ManiaPlanet.PlayerConnect
  • ManiaPlanet.PlayerChat

See the full list of callbacks

var client = gbxremote.createClient(5000);

client.on('connect', function() {
	client.query('SetApiVersion', ['2012-06-19']);
	client.query('EnableCallbacks', [true]);

client.on('callback', function(method, params) {
	console.log("Callback from server: %s - %d params", method, params.length);
	// This would be the typical place to have a switch statement. Please dont do that. Use the events, as shown below.

Event: <method>(params)

Callbacks will also emit separate events for each method. It's hard to explain. Learn from example:

var client = gbxremote.createClient(5000);

client.on('connect', function() {
	// Before enabling callbacks, make sure you set the latest API.
	client.query('SetApiVersion', ['2012-06-19']);
	client.query('EnableCallbacks', [true]);

// ManiaPlanet.PlayerConnect(string Login, bool IsSpectator);
client.on('ManiaPlanet.PlayerConnect', function(params) {
	console.log('%s just joined as a %s', params[0], params[1] ? 'spectator' : 'player');

// ManiaPlanet.PlayerDisconnect(string Login); 
client.on('ManiaPlanet.PlayerDisconnect', function(params) {
	console.log('%s left the server', params[0]);

These events can basically take over the big switch statements that is normal in todays server controllers.

Event: close(had_error)

Emitted once the socket is fully closed. The argument had_error is a boolean which says if the socket was closed due to a transmission error.

var client = gbxremote.createClient(5000);

client.on('connect', function() {
	// Connected...
	// Do stuff?
	// Disconnect

client.on('close', function(had_error) {
	console.log('Connection to the server has been closed');

The License (MIT)

Released under the MIT license. See the LICENSE file for the complete wording.

Current Tags

  • 0.2.1                                ...           latest (4 years ago)

7 Versions

  • 0.2.1                                ...           4 years ago
  • 0.2.0                                ...           4 years ago
  • 0.1.4                                ...           6 years ago
  • 0.1.3                                ...           6 years ago
  • 0.1.2                                ...           8 years ago
  • 0.1.1                                ...           8 years ago
  • 0.1.0                                ...           8 years ago
Maintainers (1)
Today 0
This Week 0
This Month 0
Last Day 0
Last Week 0
Last Month 5
Dependencies (5)
Dev Dependencies (2)

Copyright 2014 - 2016 © |