What is Real Time Computing?
Real time computing, or reactive computing, is a concept that describes any computing system that must respond to changes in the environment according to definite time constraints, usually on the order of milliseconds. A rule of thumb is that failing to meet those time constraints would render the system useless or ineffectual, even if the code is logically sound.
Think of a fast-paced multiplayer game. If your Internet connection suddenly spikes and causes the game to lag, the game becomes non-real time and as a result it temporarily fails its purpose as a form of real time computing. The same goes for video chat, where users expect little to no delay in the two-way transmission of video, else it becomes difficult to converse.
What is Considered "Real Time?"
A real time system could, of course, still be near real time enough to call it real time, or simply "near real time", depending on what is acceptable to users or endpoints. For humans, the acceptable time constraint based on average reaction time is between 50ms – 250ms.
Peer-to-peer technologies like WebRTC aim to provide real time capabilities to all kinds of applications, but because of the inherent latency incurred over a distributed network like the Internet, special care must still be taken in terms of architectural planning, software design, and message delivery.
On the web, real time computing is implied to be "soft real time" due to latency. APIs that are used to provide data in real time are not always strictly real time, but only as close as possible, hence the need for efficient messaging frameworks (compare Pub/Sub or streaming vs. HTTP Long Polling).
General use cases where real time computing is desired include:
- Instant messaging (mobile / text chat)
- Video chat (multi-party / videoconference)
- Screen sharing and collaboration (education / document editing)
- IoT (control and monitoring)
- Location (map navigation and tracking)
- Financial (stock prices / charts / auctions)
- Healthcare (patient monitoring)
- Digital marketing (interactive displays)
- Software development (bug tracking)