JSPM

  • ESM via JSPM
  • ES Module Entrypoint
  • Export Map
  • Keywords
  • License
  • Repository URL
  • TypeScript Types
  • README
  • Created
  • Published
  • Downloads 94
  • Score
    100M100P100Q65583F
  • License MIT

A modern RCON client implementation written in TypeScript (targeting ES2015) and is async/await friendly.

Package Exports

  • rcon-ts

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (rcon-ts) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

rcon-ts

A modern RCON client implementation written in TypeScript (targeting ES2015) and is async/await friendly.

(Originally node-modern-rcon.)

Installation

npm install rcon-ts --save

API

Initialization

Creates a new Rcon object.

import Rcon from 'rcon-ts';
const rcon = new Rcon({
  host: "host-path",
  port: 25575 /*default*/, 
  password: "required",
  timeout: 5000 /*default (5 seconds)*/
});

Connecting

Connects with the credentials provided in the constructor. Can be awaited on.

rcon.connect();

Sending

Executes the provided command on the active connection and returns the response.

let response = await rcon.send("[rcon request]");

Disconnecting

Ends the current socket and subsequently signals to any pending request that the connection was disconnected.

rcon.disconnect();

Sessions

To simplify the usage, you can use the session method.

// Single command:
rcon
  .session(c => c.send("one")) // connects, sends, and then disconnects.
  .then(()=>console.log("first session complete"), console.error);
  
// Multiple commands:
rcon
  .session(async c => {
    await c.send("two");
    await c.send("three");
  })
  .then(()=>console.log("second session complete"), console.error);

Any number of conccurrent sessions can be active on a single connection and once they've all completed the connection will end.

session takes a promise factory as a parameter and passes the current Rcon instance as the first param (optional) to the factory.

Usage Examples

async function sendHelp()
{
  rcon.connect();
  // safe to immediately setup requests without waiting.
  console.log(await rcon.send('/help'));
  rcon.disconnect();
}

sendHelp().finally(() =>
{
  const errors = rcon.errors;
  if(errors.length) console.warn("Errors:",errors);
});

Or simply...

rcon
  .session(c => c.send('/help'))
  .then(console.log, console.error);

Factorio

Setup:

For usage or testing, make sure you are starting the game from command line or connecting to an rcon configured remote instance.

factorio.exe --start-server [save-name].zip --rcon-port [port] --rcon-password [password]

Verifying it's working:

Try either one of the examples above.