hackchat-server is a general use websocket server module designed to quickly bootstrap an application. The protocol is json only, with a module-based RPC-style command structure.
- Hot reload support
- Update code without losing current connections
- Built in ratelimiting & ip ban
- Simple statistics tracking
- Self documenting *
- Session recovery *
- Multi-language support
- Quick module boilerplate generation
npx hc-generate-cmd
Node.js (version 14.0) or newer is required.
Add to your project with npm install hackchat-server --save
.
Once installed, run npx hc-config
to generate a config file. Skip this step if you are using an existing config file.
Next, you may choose to run npx hc-import
and import the standard modules. You should, at minimum, import the internal/* modules, unless you're working with existing command module files.
The hc-import script will accept a --remote
argument to import remote command modules, like npx hc-import --remote=https://github.com/someUser/command-modules.git
. (Note: currently this feature is unavailable)
Or use npx hc-generate-cmd
to quickly generate boilerplate modules.
All hc-config
, hc-import
& hc-generate-cmd
scripts support multiple languages via the --lang
argument. See example values in languages section. Example: hc-generate-cmd --lang=fr
import { CoreApp } from 'hackchat-server';
const server = new CoreApp({
configPath: '.hcserver.json',
logErrDetailed: true,
lang: 'en',
});
server.init();
internal\disconnect.js
CLient disconnection event handlerinternal\socketreply.js
Client error/warn event handlerremote\session.js
Standard remote session handlerutility\help.js
Self documentation moduleutility\reload.js
Command hot reloader module
Currently supported:
- English (en): src/translations/en.json
Languages:
After forking & cloning this repo, navigate to the src/translations directory. Duplicate the en.json
file. What you name the duplicate json file is fairly important, highly suggest that you use the two-letter ISO 639-1 abbreviations. The new language file will then be used by the lang
property passed to the server, or by the --lang
argument on the npx scripts.
Issues:
Before creating an issue, please ensure that it hasn't already been reported/suggested, and double-check the documentation.