-
Notifications
You must be signed in to change notification settings - Fork 13
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Merge pull request #12 from exodus4d/develop
v1.2.0
- Loading branch information
Showing
6 changed files
with
718 additions
and
69 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,37 +1,100 @@ | ||
### [WIP] WebSocket server for [Pathfinder](https://github.com/exodus4d/pathfinder) | ||
## WebSocket server for [Pathfinder](https://github.com/exodus4d/pathfinder) | ||
|
||
####Requirements: | ||
1. A working instance of *[Pathfinder](https://github.com/exodus4d/pathfinder)* **(>= v1.2.0)**. | ||
2. A working installation of *[ØMQ](http://zeromq.org/area:download)* **(>= v4.2.0)**. | ||
Which is a "network library" written in C (very fast) that handles TCP based socket connections | ||
between your existing _Pathfinder_ installation and this WebSocket server extension. [download *ØMQ*](http://zeromq.org/area:download). | ||
3. A new [PHP extension for *ØMQ*](http://zeromq.org/bindings:php) that handles the communication between this WebSocket server and *ØMQ*. **(>= v1.1.3)** | ||
### Requirements | ||
- A working instance of *[Pathfinder](https://github.com/exodus4d/pathfinder)* **(≥ v1.2.0)** | ||
- [_Composer_](https://getcomposer.org/download/) to install packages for the WebSocket server | ||
|
||
####Install: | ||
Make sure you meet the requirements before continue with the installation. | ||
|
||
1. Install [Composer](https://getcomposer.org/download/) | ||
### Install | ||
1. Checkout this project in a **new** folder (NOT the install for _Pathfinder_ itself) e.g. `/var/www/websocket.pathfinder` | ||
1. Install [_Composer_](https://getcomposer.org/download/) | ||
2. Install Composer dependencies from `composer.json` file: | ||
- `$ composer install` OR | ||
- `$ php composer.phar install` (change composer.phar path to your Composer directory) | ||
3. Start WebSocket server `php cmd.php` | ||
- `$ cd /var/www/websocket.pathfinder` | ||
- `$ composer install` | ||
3. Start WebSocket server `$ php cmd.php` | ||
|
||
### Configuration | ||
|
||
#### Default | ||
|
||
####Default Configuration | ||
**Clients (WebBrowser) listen for connections** | ||
- Host:`0.0.0.0.` (=> any client can connect) | ||
- Port:`8020` | ||
- URI:`127.0.0.1:8020` (Your WebServer (e.g. Nginx) should pass all WebSocket connections to this source) | ||
- Host: `0.0.0.0.` (=> any client can connect) | ||
- Port: `8020` | ||
- URI: `127.0.0.1:8020` (Your WebServer (e.g. Nginx) should pass all WebSocket connections to this source) | ||
|
||
**TCP Socket connection (Internal use fore WebServer <=> WebSocket communication)** | ||
- Host:`127.0.0.1` (=> Assumed WebServer and WebSocket Server running on the same machine) | ||
- Port:`5555` | ||
**TCP TcpSocket connection (Internal use for WebServer ⇄ WebSocket communication)** | ||
- Host: `127.0.0.1` (=> Assumed WebServer and WebSocket Server running on the same machine) | ||
- Port: `5555` | ||
- URI: `tcp://127.0.0.1:5555` | ||
|
||
#### Custom [Optional] | ||
|
||
**[Optional]** | ||
The default configuration should be fine for most installations. | ||
You can change/overwrite the default **Host** and **Port** configuration by adding additional CLI parameters when starting the WebSocket server: | ||
|
||
`php cmd.php --pf_listen_host [CLIENTS_HOST] --pf_listen_port [CLIENTS_PORT] --pf_host [TCP_HOST] --pf_port [TCP_PORT]` | ||
`$ php cmd.php --pf_listen_host [CLIENTS_HOST] --pf_listen_port [CLIENTS_PORT] --pf_host [TCP_HOST] --pf_port [TCP_PORT]` | ||
|
||
### Unix Service (systemd) | ||
|
||
#### New Service | ||
It is recommended to wrap the `cmd.php` script in a Unix service, that over control the WebSocket server. | ||
This creates a systemd service on CentOS7: | ||
1. `$ cd /etc/systemd/system` | ||
2. `$ vi websocket.pathfinder.service` | ||
3. Copy script and adjust `ExecStart` and `WorkingDirectory` values: | ||
|
||
``` | ||
[Unit] | ||
Description = WebSocket server (Pathfinder) [LIVE] environment | ||
After = multi-user.target | ||
[Service] | ||
Type = idle | ||
ExecStart = /usr/bin/php /var/www/websocket.pathfinder/pathfinder_websocket/cmd.php | ||
WorkingDirectory = /var/www/websocket.pathfinder/pathfinder_websocket | ||
TimeoutStopSec = 0 | ||
Restart = always | ||
LimitNOFILE = 10000 | ||
Nice = 10 | ||
[Install] | ||
WantedBy = multi-user.target | ||
``` | ||
|
||
Now you can use the service to start/stop/restart your WebSocket server | ||
- `$ systemctl start websocket.pathfinder.service` | ||
- `$ systemctl restart websocket.pathfinder.service` | ||
- `$ systemctl stop websocket.pathfinder.service` | ||
|
||
#### Auto-Restart the Service | ||
You can automatically restart your service (e.g. on _EVE-Online_ downtime). Create a new "timer" for the automatic restart. | ||
1. `$ cd /etc/systemd/system` (same dir as before) | ||
2. `$ vi restart.websocket.pathfinder.timer` | ||
3. Copy script: | ||
|
||
``` | ||
[Unit] | ||
Description = Restart timer (EVE downtime) for WebSocket server [LIVE] | ||
[Timer] | ||
OnCalendar = *-*-* 12:01:00 | ||
Persistent = true | ||
[Install] | ||
WantedBy = timer.target | ||
``` | ||
Now we need a new "restart service" for the timer: | ||
1. `$ cd /etc/systemd/system` (same dir as before) | ||
2. `$ vi restart.websocket.pathfinder.service` | ||
3. Copy script: | ||
|
||
``` | ||
[Unit] | ||
Description = Restart (periodically) WebSocket server [LIVE] | ||
[Service] | ||
Type = oneshot | ||
ExecStart = /usr/bin/systemctl try-restart websocket.pathfinder.service | ||
``` | ||
|
||
####Info: | ||
### Info | ||
- [*Ratchet*](http://socketo.me/) - "WebSockets for PHP" |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.