Server for RethinkDB Horizon, an open-source developer platform for building realtime, scalable web apps.
An extensible middleware server built on top of RethinkDB which exposes a websocket API to front-end applications.
The Fusion server requires some tools and libraries to be available before it can run:
node.js- interpreter to run the Fusion server
argparse- parsing command line arguments
joi- object schema validation
rethinkdb- js client for connecting to a RethinkDB server
winston- async logging
ws- communicating with Fusion clients over websockets
openssl- generating ssl certificates
rethinkdb- for running a RethinkDB server
At the moment, there are a couple steps to getting Fusion running on your system. In the future, we plan to have most if not all of this compressed into a single
npm install -g fusion.
The Fusion server runs on NodeJS which you will need to install. Go to nodejs.org for the latest stable version.
# From within this directorynpm install
OpenSSL is required to generate the cert and key pair necessary to serve Fusion securely via HTTPS and WSS. Usually this is done on the production server where you are running Fusion, however to do this locally you'll need to have the OpenSSL installed.
brew install openssl
Check out rethinkdb.com/install for the best method of installing RethinkDB on your platform.
Lastly, from within this directory you can run:
npm install -g
Which will install Fusion on your path and allow you to just type:
However, if you do a
git pull you will need to rerun this command to update it. For a more bare metal approach just run:
This serves Fusion queries on
ws://localhost:8181, serves the Fusion client library on
http://localhost:8181/fusion/fusion.js, and connects to the RethinkDB server at
|--bind HOST||Local hostname to serve Fusion on (repeatable).|
|--port PORT||Local port to serve fusion on. Defaults to
|--connect HOST:PORT||Host and port of the RethinkDB server to connect to. Defaults to localhost:28015|
|--key-file PATH||Path to the key file to use, defaults to
|--cert-file PATH||Path to the cert file to use, defaults to
|--debug||Enable debug logging.|
|--insecure||Serve insecure websockets, ignore
|--auto-create-table||Create tables used by requests if they do not exist|
|--auto-create-index||Create indexes used by requests if they do not exist|
|--dev||Runs the server in development mode, this sets
There are proper ways to get a certificate registered through a Certificate
Authority, but for the purpose of getting up-and-running as soon as possible,
generate a self-signed certificate. This command will generate the certificate
using the default options from
openssl, and should not be used for anything
openssl req -x509 -newkey rsa:2048 -keyout fusion-key.pem -out fusion-cert.pem -days 365 -nodes -batch
Once a key file and cert file have been obtained, launch the server without the
flag, and provide the files in the
In addition to the requirements for the fusion server:
mocha- for running the test suites
This runs the suite of tests using ad-hoc instances of RethinkDB, Fusion, and generated SSL certificates.
No preparation should be necessary aside from installing the required programs and modules.
A log file is created, 'fusion_test_*.log', named by the
pid of the test process. In addition, the
ad-hoc RethinkDB instance will create a data directory, './rethinkdb_data_test'. Unless something goes wrong, the RethinkDB data directory should be cleaned up by the tests at exit.