UNPKG

api-websocket-bridge

Version:

API WebSocket Bridge is a Node.js application that provides a WebSocket server for real-time communication. It allows clients to connect and exchange data using the WebSocket protocol

150 lines (108 loc) 4.8 kB
# API WebSocket Bridge API WebSocket Bridge is a Node.js application designed to be run in a Docker container. It constantly refreshes an API at a set interval and distributes WebSocket (WSS) events to connected clients. ## Prerequisites Before running the API WebSocket Bridge, make sure you have the following: - Docker installed on your machine. ## Getting Started To run the API WebSocket Bridge in a Docker container, follow these steps: 1. Clone this repository to your local machine. 2. Navigate to the project directory. ```bash cd websocket-driver ``` 3. Configure the API WebSocket Bridge by editing the `config.json` file located in the `config` directory. Refer to the 'Configuration' section below for details on how to customize the configuration based on your requirements and the API you are working with. 4. Build the Docker image. ```bash docker build -t websocket-driver . ``` 5. Run the Docker container, exposing the necessary port and providing the required volume mounts. ```bash docker run -d -p 8080:8080 --name websocket-container \ -v /path/to/cert/fullchain.pem:/app/cert/fullchain.pem \ -v /path/to/cert/privkey.pem:/app/cert/privkey.pem \ -v /path/to/config:/app/config \ websocket-driver ``` Make sure to replace `/path/to/cert` with the path to your SSL certificate and key files, and `/path/to/config` with the path to your `config.json` file. ## Configuration The WebSocketDriver application relies on a configuration file (`config.json`) to specify various settings. Below is an example configuration that corresponds to the example response from Salty Bet's API: ```json { "certPath": "/app/cert/fullchain.pem", "keyPath": "/app/cert/privkey.pem", "port": 8080, "updateInterval": 5000, "apiUrl": "https://www.saltybet.com/state.json", "events": { "teamNamesChange": { "emitEvent": "teamNamesChange", "params": ["p1name", "p2name"] }, "betAmountChange": { "emitEvent": "betAmountChange", "params": ["p1total", "p2total"] }, "statusChange": { "emitEvent": "statusChange", "params": ["status"] }, "alertChange": { "emitEvent": "alertChange", "params": ["alert"] }, "remainingChange": { "emitEvent": "remainingChange", "params": ["remaining"] } } } ``` - `"certPath"` and `"keyPath"` specify the file paths for the SSL certificate and private key respectively. - `"port"` defines the port number on which the WebSocket server will run. - `"updateInterval"` determines the interval (in milliseconds) at which the API will be checked for updates. - `"apiUrl"` specifies the URL of the API that provides the match information. In this case, it is Salty Bet's API endpoint (`https://www.saltybet.com/state.json`). - `"events"` contains a mapping of event types to their corresponding configuration. The example response from Salty Bet's API: ```json { "p1name": "Upset chieshen", "p2name": "Brunestud arcueid", "p1total": "0", "p2total": "0", "status": "open", "alert": "", "x": 0, "remaining": "78 more matches until the next tournament!" } ``` The configuration defines five events with their respective `emitEvent` names and associated parameters. These events allow you to subscribe to specific changes in the API response: - `teamNamesChange`: Triggers when the names of the players change (`"p1name"` or `"p2name"`). - `betAmountChange`: Triggers when the total bet amounts change (`"p1total"` or `"p2total"`). - `statusChange`: Triggers when the match status changes (`"status"`). - `alertChange`: Triggers when there is an alert or message change (`"alert"`). - `remainingChange`: Triggers when the number of matches remaining changes (`"remaining"`). These events provide flexibility in handling specific updates and allow you to emit WebSocket events accordingly. Please make sure to modify the configuration file (`config.json`) according to your requirements and the API you are working with. ## Development To set up the project for development, follow these steps: 1. Clone this repository to your local machine. 2. Navigate to the project directory. ```bash cd api-websocket-bridge ``` 3. Install the required dependencies. ```bash npm install ``` 4. Start the API WebSocket Bridge. ```bash npm start ``` The API WebSocket Bridge will now be running on your local machine. ## License This project is licensed under the [Apache 2.0](LICENSE). ## Acknowledgements This project makes use of the following packages: - [axios](https://www.npmjs.com/package/axios) v1.4.0 - [events](https://www.npmjs.com/package/events) v3.3.0 We would like to express our gratitude to the authors and maintainers of these packages for their valuable contributions to the open-source community.