loop-server-fast
A faster NodeJS reader to complement the AtomJump Loop Server.
- Static
- Latest Patch
- Latest Minor
- Latest Major
- 0.8.3
- 0.8.2
- 0.8.0
- 0.7.9
- 0.7.8
- 0.7.6
- 0.7.5
- 0.7.4
- 0.7.3
- 0.7.2
- 0.7.1
- 0.7.0
- 0.6.5
- 0.6.4
- 0.6.3
- 0.6.2
- 0.6.1
- 0.6.0
- 0.5.27
- 0.5.26
- 0.5.25
- 0.5.24
- 0.5.23
- 0.5.22
- 0.5.21
- 0.5.20
- 0.5.19
- 0.5.18
- 0.5.17
- 0.5.16
- 0.5.15
- 0.5.14
- 0.5.13
- 0.5.12
- 0.5.11
- 0.5.10
- 0.5.8
- 0.5.7
- 0.5.6
- 0.5.5
- 0.5.4
- 0.5.2
- 0.5.1
- 0.5.0
- 0.3.4
- 0.3.3
- 0.3.2
- 0.3.1
- 0.3.0
- 0.2.9
- 0.2.8
- 0.2.7
- 0.2.6
- 0.2.5
- 0.2.4
- 0.2.2
- 0.2.1
- 0.2.0
- 0.1.13
- 0.1.12
- 0.1.11
- 0.1.10
- 0.1.8
- 0.1.7
- 0.1.6
- 0.1.5
- 0.1.4
- 0.1.3
- 0.1.2
- 0.1.1
- 0.1.0
- 0.0.7
- 0.0.6
- 0.0.5
- 0.0.4
- 0.0.3
- 0.0.2
- 0.0.1

loop-server-fast
A faster NodeJS reader plugin to complement the AtomJump Messaging Server (see http://atomjump.org). This speeds up the core of the AtomJump Messaging Server PHP scripts, to allow for a large increase in the number of simultaneous users, with the same hardware.
Requirements
- NodeJS >= 4.x
- AtomJump Messaging Server >= 1.5.5
- Linux server (or any machine with NodeJS)
Server Setup
Follow the instructions to set up the Messaging Server as a PHP script.
Then to install the daemon:
npm install pm2@latest -g
npm install loop-server-fast -g
npm config set loop-server-fast:configFile /path/to/your/messaging-server/config/config.json
npm config set loop-server-fast:messagesFile /path/to/your/messaging-server/config/messages.json
To your Loop Server's config/config.json, add the following
{
"staging": {
...
"readPort" : 3277, [can be a different port]
"readURL" : "http://yoururl.com:3277", [for wider compatiblity you could use a proxy. See 'Ports' section below]
"httpsKey" : "/path/to/your/https.key", [optional, for https only]
"httpsCert": "/path/to/your/https.crt", [optional, for https only]
...
}
}
(note, remove the [comments in square brackets above])
Now run and set up the script to run after a server reboot.
cd "$(npm prefix -global)/lib/node_modules/loop-server-fast/"
pm2 start npm --name "loop-server-fast" -- start; cd ~
pm2 save
pm2 startup #and run the command it outputs, to get autostart at boot-up.
Open your firewall e.g. on Ubuntu (also see further details at https://www.digitalocean.com/community/tutorials/how-to-setup-a-firewall-with-ufw-on-an-ubuntu-and-debian-cloud-server)
sudo ufw allow 3277/tcp
Now run your staging installation interface in a browser. It should continue as normal, but your NodeJS server is handling most read requests.
Starting and stopping
pm2 start loop-server-fast
pm2 stop loop-server-fast
Going live
Then, to your Loop Server's config/config.json, add the following
{
"production": {
...
"readPort" : 3277 [can be a different port]
"readURL" : "http://yoururl.com:3277", [for wider compatiblity you could use a proxy. See 'Ports' section below]
"httpsKey" : "/path/to/your/https.key", [optional, for https only]
"httpsCert": "/path/to/your/https.crt", [optional, for https only]
...
}
}
(note, remove the [comments in square brackets above])
Switch the NodeJS server to the Messaging Server's production settings with:
npm config set loop-server-fast:production true
pm2 restart loop-server-fast
(or back to staging with 'false')
Ports
If you use a non-standard port number in a URL e.g. 3277, some machines behind proxy servers, particularly corporates, or some public PCs may filter the URL out when trying to read from it. One approach here, at a slight loss of speed, is to use the standard port 80 for http and 443 for https, and ProxyPass in Apache: http://stackoverflow.com/questions/9831594/apache-and-node-js-on-the-same-server
" With the ProxyPass directive in the Apache httpd.conf you can pipe all requests on a particular URL to the Node.JS application.
ProxyPass /node http://yourcompany.com:3277/
Also, make sure the following lines are NOT commented out so you get the right proxy and submodule to reroute http requests:
LoadModule proxy_module modules/mod_proxy.so
LoadModule proxy_http_module modules/mod_proxy_http.so
"
Which would allow your readURL to be e.g.
http://yourcompany.com/node
Troubleshooting
You can track logs with
pm2 logs
To switch on verbose messages
npm config set loop-server-fast:verbose true
pm2 restart loop-server-fast
and to switch back off again
npm config set loop-server-fast:verbose false
pm2 restart loop-server-fast
If, you are on a small machine (e.g. 512MB RAM), and the install fails, try this
npm install loop-server-fast -g -production
Upgrading
One convenient line, to minimise downtime (although you will have a few seconds down):
pm2 stop loop-server-fast; pm2 delete loop-server-fast; npm install loop-server-fast -g; cd "$(npm prefix -global)/lib/node_modules/loop-server-fast/"; pm2 start npm --name "loop-server-fast" -- start; cd ~; pm2 save
or, if you need a 'sudo' version of this
sudo pm2 stop loop-server-fast; sudo pm2 delete loop-server-fast; npm install loop-server-fast -g; cd "$(npm prefix -global)/lib/node_modules/loop-server-fast/"; sudo pm2 start npm --name "loop-server-fast" -- start; cd ~; sudo pm2 save