Lightstreamer: WebSocket Full-Duplex, Bi-Directional, Real-Time Data Delivery
Lightstreamer provides insight into how its Real-Time web server can empower a multiplayer 3D game to provide impressive bandwidth usage, though use of Lighstreamers adapting throttling algorithms (originated in the financial industry). Resampling of user data on the flyer is the key though a few dynamic variables:
- Bandwidth allocation: For each client, a maximum bandwidth can be allocated to its multiplexed stream connection. Such allocation can be changed at any time and Lightstreamer guarantees that it is always respected, whatever the original data flow bandwidth is.
- Frequency allocation: For each data flow (a subscription, in Lightstreamer terms) of each client’s multiplexed stream connection, a maximum update frequency can be allocated. Again, such allocation can be changed at any time.
- Real bandwidth detection: Internet congestions are automatically detected and Lightstreamer continuously adapt to the real bandwidth available.
Conflation is also mentioned in the article, something that is important with limited bandwidth, and limited client side compute power:
Resampling works better with conflation. Conflation means that instead of simply discarding updates, when resampling is done, the sender should try to merge them to save as much information as possible
Finally, the source code is offered on GitHub offer reader the ability to play with Lightstreamer subscription modes and message routing amongst other things.