ably.com
Open in
urlscan Pro
2606:4700:10::6814:59c3
Public Scan
URL:
https://ably.com/blog/realtime-challenges-for-audience-engagement
Submission: On December 04 via api from BY — Scanned from DE
Submission: On December 04 via api from BY — Scanned from DE
Form analysis
3 forms found in the DOMGET /search
<form class="flex items-start" action="/search" method="get">
<div class="relative w-full"><svg class="text-cool-black absolute top-12 left-16" style="width: 1.5rem; height: 1.5rem;">
<use xlink:href="#sprite-icon-gui-search"></use>
</svg><input type="search" name="q" class="ui-input pl-48 h-48" placeholder="Search" autocomplete="off" data-id="meganav-search-input">
<div class="absolute w-full mt-8 z-10 hidden shadow-container rounded-lg bg-white border border-mid-grey" data-id="meganav-search-autocomplete-container">
<ol class="m-16" data-id="meganav-search-autocomplete-list"></ol>
</div>
</div><button type="submit" class="ui-btn-secondary flex-shrink-0 ml-8 sm:ml-16 md:ml-24 xl:ml-32">Search</button>
</form>
GET /search
<form class="mb-16" action="/search" method="get">
<div class="relative w-full"><svg class="text-cool-black absolute top-12 left-16 hover:text-gui-hover" style="width:1.5rem;height:1.5rem">
<use xlink:href="#sprite-icon-gui-search"></use>
</svg><button type="button" class="absolute top-12 right-16 p-0 focus:outline-gui-focus m-0 md:hidden invisible" data-id="meganav-search-input-clear"><svg class="text-dark-grey " style="width:1.5rem;height:1.5rem">
<use xlink:href="#sprite-icon-gui-cross-circled-fill"></use>
</svg></button><input type="search" name="q" class="ui-input px-48 h-48" style="max-width:none" placeholder="Search" autocomplete="off" data-id="meganav-mobile-search-input">
<div class="absolute w-full mt-8 z-10 hidden shadow-container rounded-lg bg-white border border-mid-grey" data-id="meganav-search-autocomplete-container">
<ol class="m-16" data-id="meganav-search-autocomplete-list"></ol>
</div>
</div>
</form>
<form class="col-span-full sm:col-span-4 relative z-10">
<div class="font-sans font-medium uppercase tracking-widen-0.1 text-overline2 text-white mb-8">Enter your email</div><input class="ui-input" type="email" name="EMAIL" value=""><button type="submit" class="ui-btn-invert mt-24"
disabled="">Submit</button>
</form>
Text Content
* ProductsProducts THE ABLY PLATFORM Easily power any realtime experience in your application. No complex infrastructure to manage or provision. Just a simple API that handles everything realtime, and lets you focus on your code. Explore how it works PRODUCTS * Pub/Sub Channels Build infinitely scalable realtime applications. * Spaces (Beta) Create multi-user collaborative environments. * LiveSync (Pre release) Keep clients in sync with any relational database. TECHNOLOGY * Predictable performance A low-latency and high-throughput global network. * Guaranteed ordering & delivery Data is delivered - in order - even after disconnections. * Fault tolerant infrastructure Redundancy is built in at global and regional levels. * High scalability & availability Built for scale with legitimate 99.999% uptime SLAs. * Global edge network An edge network of 15 core routing datacenters and 205+ PoPs. Explore Four Pillars of Dependability * SolutionsSolutions SOLUTIONS * Live Chat Deliver highly reliable chat experiences at scale. * Multiplayer Collaboration Bring collaborative multiplayer experiences to your users. * Data Broadcast Broadcast realtime event data to millions of devices around the globe. * Data Synchronization Keep your frontend and backend in realtime sync, at global scale. * Notifications Deliver cross-platform push notifications with a simple unified API. * Asset Tracking (Beta) Track assets in realtime with a solution optimised for last mile logistics. INDUSTRY * EdTech Deliver interactive learning experiences. * FinTech Deliver personalised financial data in realtime. * Automotive, Logistics, & Mobility Power diagnostics, order tracking and more. * B2B Platforms Empower your customers with realtime solutions. * Healthcare (HIPAA) Provide trustworthy, HIPAA-compliant realtime apps. * eCommerce & Retail Enrich customer experiences with realtime updates. * Sports, Media & Audience Engagement Deliver engaging global realtime experiences. * Gaming Power ultra fast and reliable gaming experiences. * IoT & Connected Devices Monitor and control global IoT deployments in realtime. * CompanyCompany WHY COMPANIES CHOOSE ABLY * Customers Ably supports customers across multiple industries. * Case studies Discover how customers are benefiting from Ably. * Compare our tech Choose the right realtime service. * Partners Ably collaborates and integrates with AWS. * Resources Learn more about realtime with our handy resources. * About Ably Find out more about Ably’s mission. * Careers Discover our open roles and core Ably values. * Events Join Ably at upcoming events. BLOG * Essential guide to WebSocket authentication Nov 30, 2023 * Ultimate guide: Best databases for NodeJS apps Nov 29, 2023 * Built with React: Ably Realtime Hackathon projects Nov 28, 2023 More from our Blog * DevelopersDevelopers EXPLORE * Documentation Technical guides to help you build with Ably. * Quickstart guides Documentation to help you get started quickly. * Integrations Find out more about Ably integrations. * Live examples Discover our features and their use cases. * SDKs Download an SDK to help you build realtime apps faster. * Tutorials & Demos Get stuck in with our hands-on resources. * Chat apps reference guide Learn how to build chat apps with Ably. * Multiplayer reference guide Learn how to build collaborative features with Ably. QUICK LINKS * Discord * GitHub * Changelog * Status * Support & FAQs * Pricing * Contact us * Login * Search Popular pages * How does Ably work? * Quickstart guide * Publish/Subscribe Messaging * Platform Support * Sign up free * Login * Popular pages * How does Ably work? * Quickstart guide * Publish/Subscribe Messaging * Platform * Products Back THE ABLY PLATFORM Easily power any realtime experience in your application. No complex infrastructure to manage or provision. Just a simple API that handles everything realtime, and lets you focus on your code. Explore how it works PRODUCTS * Pub/Sub Channels Build infinitely scalable realtime applications. * Spaces (Beta) Create multi-user collaborative environments. * LiveSync (Pre release) Keep clients in sync with any relational database. TECHNOLOGY * Predictable performance A low-latency and high-throughput global network. * Guaranteed ordering & delivery Data is delivered - in order - even after disconnections. * Fault tolerant infrastructure Redundancy is built in at global and regional levels. * High scalability & availability Built for scale with legitimate 99.999% uptime SLAs. * Global edge network An edge network of 15 core routing datacenters and 205+ PoPs. Explore Four Pillars of Dependability * Solutions Back SOLUTIONS * Live Chat Deliver highly reliable chat experiences at scale. * Multiplayer Collaboration Bring collaborative multiplayer experiences to your users. * Data Broadcast Broadcast realtime event data to millions of devices around the globe. * Data Synchronization Keep your frontend and backend in realtime sync, at global scale. * Notifications Deliver cross-platform push notifications with a simple unified API. * Asset Tracking (Beta) Track assets in realtime with a solution optimised for last mile logistics. INDUSTRY * EdTech Deliver interactive learning experiences. * FinTech Deliver personalised financial data in realtime. * Automotive, Logistics, & Mobility Power diagnostics, order tracking and more. * B2B Platforms Empower your customers with realtime solutions. * Healthcare (HIPAA) Provide trustworthy, HIPAA-compliant realtime apps. * eCommerce & Retail Enrich customer experiences with realtime updates. * Sports, Media & Audience Engagement Deliver engaging global realtime experiences. * Gaming Power ultra fast and reliable gaming experiences. * IoT & Connected Devices Monitor and control global IoT deployments in realtime. * Company Back -------------------------------------------------------------------------------- WHY COMPANIES CHOOSE ABLY * Customers Ably supports customers across multiple industries. * Case studies Discover how customers are benefiting from Ably. * Compare our tech Choose the right realtime service. * Partners Ably collaborates and integrates with AWS. * Resources Learn more about realtime with our handy resources. * About Ably Find out more about Ably’s mission. * Careers Discover our open roles and core Ably values. * Events Join Ably at upcoming events. BLOG * Essential guide to WebSocket authentication Nov 30, 2023 * Ultimate guide: Best databases for NodeJS apps Nov 29, 2023 * Built with React: Ably Realtime Hackathon projects Nov 28, 2023 More from our Blog * Developers Back -------------------------------------------------------------------------------- EXPLORE * Documentation Technical guides to help you build with Ably. * Quickstart guides Documentation to help you get started quickly. * Integrations Find out more about Ably integrations. * Live examples Discover our features and their use cases. * SDKs Download an SDK to help you build realtime apps faster. * Tutorials & Demos Get stuck in with our hands-on resources. * Chat apps reference guide Learn how to build chat apps with Ably. * Multiplayer reference guide Learn how to build collaborative features with Ably. QUICK LINKS * Discord * GitHub * Changelog * Status * Support & FAQs * Pricing -------------------------------------------------------------------------------- Contact usSign up free On this page Back to all blog posts Back Realtime experiences Realtime experiences 10 min read•Last updatedUpdated Nov 29, 2022 REALTIME CHALLENGES FOR AUDIENCE ENGAGEMENT Written by Jo Stichbury WHAT IS AUDIENCE ENGAGEMENT? A simple example of online audience engagement could be a livestream with a host and a chat system for audience members to interact with each other in realtime. Other audience engagement solutions include features such as chat or Q&A for participants to communicate while sharing an experience, such as a Watch Party, and polls, quizzes, and leaderboards. Typical audience engagement features DEVICE AND USER PRESENCE One aspect of audience engagement is the ability to know who’s participating in a virtual event or a user’s “presence”. Closely linked to presence is the user’s state, for essential functionality such as indicators when someone is typing a message into a chat window, or the realtime location of a device. CHAT Chat messages are a common way for audience members to interact and send immediate feedback to the host of an online event, such as a livestream. Twitch was an early example; it’s popular with gamers, who stream their gameplay and their webcam feed, so others can watch and comment on gaming in realtime (and leave donations or tips in exchange for a shoutout from the host on the chat channel). POLLS & Q&A Polls and Q&A are additional aspects of audience engagement. For example, a host may ask a livestream audience, “What’s your favorite flavor of ice cream?” and give participants a short URL to follow, where they can vote online from a list of flavor options. Answers are visualized in realtime as a bar graph, pie chart, or even a word cloud and displayed in the livestream to bring the audience together. This type of poll can cause a surge in responses as the participants submit their votes simultaneously. Q&A works in reverse; the host of an online event will share a link, and participants can follow it and type in questions and comments to find out more or give feedback in realtime. QUIZ FEATURES AND GAMIFICATION Another way to engage an audience is with a multiplayer quiz, whereby the participants join a live quiz, answer questions, and see their scores on a leaderboard. The quiz could be on a standalone platform or integrated into a livestream, and these are particularly popular in the education sector. Popular products include Mentimeter, Wooclap, Kahoot, Slido, and HQ Trivia. Participants log into a specific quiz using an invite link, and as questions appear in realtime, they answer on their devices. Their scores are displayed on a leaderboard to add an element of gamification. For fairness, each question has a limited time within which the participants choose an answer. All players need to be sent the question simultaneously (fan-out) with a corresponding surge of responses in return (fan-in) as they complete the challenge before the timer expires. REALTIME UPDATES UNDERPIN AUDIENCE ENGAGEMENT For the features listed above to be engaging, they need to happen in “realtime”, or near-realtime, which is below the 100 ms threshold of human perception. Technology built on a realtime system uses a series of events, like an asynchronous conversation, rather than the request-response paradigm typical of synchronous communication. An event-driven architecture serves use cases that need to process data immediately to deliver a satisfactory user experience. It eliminates the need for blocking or constant polling and notifies application code whenever an event of interest occurs. The publish and subscribe (pub/sub) pattern is typical in event-driven systems. An event producer (publisher) sends event messages when a state change occurs. Event subscribers then consume them. Often, a dedicated broker sits between the publisher and its subscribers, enabling the event producer to offload responsibility to the broker, which delivers notifications at high volume to consumers across different devices and platforms. The broker also records events as messages as they are received from the producer. The event history is retained for a specific period so that subscribers can read event history from any particular point. The basics of the pub/sub pattern TECHNICAL CHALLENGES OF BUILDING A REALTIME ARCHITECTURE A realtime, event-driven architecture is a distributed system with associated reliability, latency, and bandwidth issues and the unpredictability of the network is a significant challenge. MESSAGE INTEGRITY In an event-driven system, lost, duplicated, or out-of-order messages can have significant consequences. Consider, for example, chat messaging, which relies on a well-defined sequence of messages. If they arrive unordered or are lost, the user experience is flawed. LOST MESSAGES A user’s connection can drop and reconnect: say if their power fails or a system problem occurs on the network, if they are on the move, or close the chat app and later relaunch it. Losing messages because of an unstable connection is not acceptable from the user’s perspective. So, when the user reconnects, the app needs to pick up with minimal friction from the point before they disconnected. Any missed messages need to be delivered without duplicating those already processed. The whole experience needs to be completely seamless. Most event-driven systems use at-least-once delivery. When the broker sends a message to an event consumer, it requires acknowledgment that it was received. If the broker doesn’t receive acknowledgement, it sends the message again to ensure it wasn’t lost on the first send (and will continue to send the message until it receives the acknowledgement). However, what if the message was received and the acknowledgment got lost? Any recent messages are now duplicate copies of the original. MESSAGE DUPLICATION AND ORDERING Message duplication is acceptable if the event-driven system uses idempotent messages, which can be processed multiple times but don’t change the system after the first time. An example of this is programming a heating thermostat. If you type in the exact temperature you require your room to reach before you get home, it doesn’t matter if the instruction is sent multiple times. The thermostat will set to your required temperature, maybe repeatedly, but it will still be the temperature you want. However, if you ask for the heating to be turned up by five degrees and the request is sent more than once, you could be in for a tropical homecoming! Message duplication in a chat app is almost as annoying for the user as lost messages or those that come out of order. A common approach is to use unique IDs to order messages if they cannot be processed successfully in any order. Alongside idempotent message types, many event-driven systems use an exactly-once processing guarantee to reconcile issues associated with duplicate messages. A de-duplication process is applied so that previously processed messages are detected and discarded. Related article: Achieving exactly-once delivery with Ably PERFORMANCE Network latency, which is the time it takes for data to get to its destination, is a critical factor for successful audience engagement. In a large-scale distributed system, latency deteriorates the further it travels between nodes. High latency can completely ruin live audio communication and video quality. It’s increasingly important to consider performance for a global audience or are hosting users in areas with poorer internet infrastructure. Low network latency comes from geographic proximity. Data should be kept as close to the users as possible via managed data centers and edge acceleration points. It isn’t sufficient to minimize latency, however. The user experience needs latency variance to be at a minimum to ensure predictability. There’s also a strong correlation between server performance (processing speed, hardware used, available RAM) and latency. To prevent a congested network and server overrun, it must be possible to dynamically increase the capacity of the server layer and reassign load. Related article: A global edge network to power digital experiences in realtime AVAILABILITY One particular aspect of audience engagement is the unpredictability of knowing how many participants there will be. For many events, the audience size won't be known until the hours or minutes before the event. The technical challenge this presents is that it is difficult to plan and provision sufficient capacity in any systems that are supporting the event. A realtime solution for audience participation needs to be highly available to support surges in data and bursts of high volume engagement across the network. When the system does not have the capacity, issues can arise, such as queuing delays, bottlenecks, network congestion, or overall system instability. Under load, achieving availability and elasticity to meet stringent uptime requirements isn’t just traditional mechanics like failover; it’s about managing capacity. The challenge is to scale horizontally and swiftly absorb millions of connections without the need for pre-provisioning. To ensure a network can cater to this type of circumstance, monitor metrics such as: * Global percentage of operating load * The elasticity and distribution of that load * The maximum number of connections and throughput Having ways to automatically and dynamically provision additional capacity when certain thresholds are exceeded is critical to ensure exceptionally high levels of uptime. Optimization should include minimizing the amounts of data transferred, for example, with a reduced message size that sends only the changes to data (the deltas) rather than entire payloads. Related article: Availability and uptime - guaranteed RELIABILITY Reliability is essential because of the embarrassment caused to a host if the event cannot run, or drops out halfway through, because of a fault. A realtime platform for audience engagement needs to be fault-tolerant so that it can continue to operate even if a component fails. To achieve fault tolerance, there need to be multiple components capable of maintaining the system if some are lost. Redundancy at a regional and global level ensures continuity of service even in the face of multiple infrastructure failures. There should be no single point of congestion and no single point of failure. When one or more components fail, the remaining components need to support the service on their own. It’s essential to understand how many regional failures can be tolerated (for example, the number of instance failures per second). If one region goes offline with failover to another, there needs to be sufficient capacity to absorb the additional traffic, even under peak loads. Related article: Engineering dependability and fault tolerance in a distributed system ABLY: THE FOUR PILLARS OF DEPENDABILITY To build a system that provides the foundation for realtime audience engagement requires a fault-tolerant infrastructure capable of low latency, scalability, and elasticity, alongside architecture that ensures the integrity of message delivery. Ably has four pillars of dependability: Performance, Integrity, Reliability and Availability Should you build a custom solution to meet the exact requirements of your business? You could spend several months and a heap of money. And you’d end up burdened with the high cost of infrastructure ownership, technical debt, and ongoing demands for engineering investment. It makes more financial sense for many companies to pass on the responsibility for scale, latency, data integrity, and reliability to a third-party vendor. Ably has fault-tolerant, highly-available, elastic global infrastructure for effortless scaling and low complexity. Our platform is mathematically modeled around the Four Pillars of Dependability. We can ensure that messages are reliably delivered at low latency over a secure, reliable, and highly available global edge network. And, there’s zero DevOps overhead, so there is no infrastructure to provision or manage. The Ably platform abstracts the worry of building a realtime solution to support audience engagement at scale so that you can focus on your core product, prioritize your audience engagement roadmap and develop features to stay competitive. FURTHER READING * Keep an audience engaged with interactive realtime features * Leader election in the browser with Ably * The realtime web: evolution of the user experience * The architecture behind a live multiplayer quiz * Scaling WebSockets for virtual events On this page 1. What is audience engagement? 1. Device and user presence 2. Chat 3. Polls & Q&A 4. Quiz features and gamification 2. Realtime updates underpin audience engagement 3. Technical challenges of building a realtime architecture 1. Message integrity 1. Lost messages 2. Message duplication and ordering 2. Performance 3. Availability 4. Reliability 4. Ably: The four pillars of dependability 1. Further reading BUILD DEPENDABLE REALTIME APPS Ably offers versatile, easy-to-use APIs to develop powerful realtime apps. Guaranteed to deliver at scale. Start building RECOMMENDED ARTICLES Realtime experiencesCollaborative experiences 7 min read YOU DON'T NEED CRDTS FOR COLLABORATIVE EXPERIENCES Nov 21, 2023 Realtime experiences 9 min read NO MORE REFRESHING: ACHIEVING LOW LATENCY DATA WITH ABLY AND CONFLUENT CLOUD Nov 15, 2023 Collaborative experiencesRealtime experiences 11 min read THE BEST REALTIME COLLABORATION SDKS, PLATFORMS, AND FRAMEWORKS Oct 25, 2023 JOIN THE ABLY NEWSLETTER TODAY 1000s of industry pioneers trust Ably for monthly insights on the realtime data economy. Enter your email Submit How we use cookies to improve your experience. Accept and close THE ABLY PLATFORM Easily power any realtime experience in your application via a simple API that handles everything realtime. * Pub/sub messaging * Push notifications * Third-party integrations * Multiple protocol messaging ABLY IS FOR * Ably Asset Tracking * Extend Kafka to the edge * EdTech * Automotive, Logistics, & Mobility * B2B Platforms * Healthcare * eCommerce & Retail * Sports & Media * Gaming * IoT & Connected Devices DEVELOPERS * Start in 5 minutes * Documentation * Tutorials * Changelog * Support & FAQs * SDKs * System status WHY ABLY * Customers * Case Studies * Four Pillars of Dependability * Compare our tech * Multi protocol support * Third-party integrations ABOUT * About Ably * Pricing * Blog * Careers * Open protocol policy * Press & Media * Contact us -------------------------------------------------------------------------------- We're hiring!Learn more at Glassdoor We're hiring!Learn more at Glassdoor -------------------------------------------------------------------------------- CookiesLegalsData ProtectionPrivacy SOC 2 Type 2 Certified HIPAA Compliant EU GDPR Certified 256-bit AES Encryption sprite-discord sprite-facebook sprite-github sprite-glassdoor sprite-google sprite-icon-display-48hrs sprite-icon-display-about-ably-col sprite-icon-display-api-keys sprite-icon-display-api sprite-icon-display-asset-tracking-col sprite-icon-display-browser sprite-icon-display-calendar sprite-icon-display-call-mobile sprite-icon-display-careers-col sprite-icon-display-case-studies-col sprite-icon-display-chat-col sprite-icon-display-chat-stack-col sprite-icon-display-chat-stack sprite-icon-display-cloud-servers sprite-icon-display-compare-tech-col sprite-icon-display-customers-col sprite-icon-display-data-broadcast-col sprite-icon-display-data-synchronization-col sprite-icon-display-docs-col sprite-icon-display-documentation sprite-icon-display-events-col sprite-icon-display-examples-col sprite-icon-display-gdpr sprite-icon-display-general-comms sprite-icon-display-hipaa sprite-icon-display-integrations-col sprite-icon-display-it-support-access sprite-icon-display-it-support-helpdesk sprite-icon-display-kafka-at-the-edge-col sprite-icon-display-laptop sprite-icon-display-lightbulb-col sprite-icon-display-live-chat sprite-icon-display-map-pin sprite-icon-display-message sprite-icon-display-padlock-closed sprite-icon-display-platform sprite-icon-display-play sprite-icon-display-privacy-shield-framework sprite-icon-display-push-notifications-col sprite-icon-display-quickstart-guides-col sprite-icon-display-resources-col sprite-icon-display-sdks-col sprite-icon-display-servers sprite-icon-display-shopping-cart sprite-icon-display-sla sprite-icon-display-soc2-type2 sprite-icon-display-tech-account-comms sprite-icon-display-tutorials-demos-col sprite-icon-display-virtual-events-col sprite-icon-display-virtual-events sprite-icon-gui-ably-badge sprite-icon-gui-arrow-bidirectional-horizontal sprite-icon-gui-arrow-bidirectional-vertical sprite-icon-gui-arrow-down sprite-icon-gui-arrow-left sprite-icon-gui-arrow-right sprite-icon-gui-arrow-up sprite-icon-gui-burger-menu sprite-icon-gui-check-circled-fill-black sprite-icon-gui-check-circled-fill sprite-icon-gui-check-circled sprite-icon-gui-checklist-checked sprite-icon-gui-clock sprite-icon-gui-close sprite-icon-gui-copy sprite-icon-gui-cross-circled-fill sprite-icon-gui-cross-circled sprite-icon-gui-dash-circled sprite-icon-gui-disclosure-arrow sprite-icon-gui-document-generic sprite-icon-gui-enlarge sprite-icon-gui-external-link sprite-icon-gui-filter-flow-step-1 sprite-icon-gui-filter-flow-step-2 sprite-icon-gui-filter-flow-step-3 sprite-icon-gui-history sprite-icon-gui-info sprite-icon-gui-link-arrow sprite-icon-gui-link sprite-icon-gui-live-chat sprite-icon-gui-minus sprite-icon-gui-plus sprite-icon-gui-quote-marks-solid sprite-icon-gui-refresh sprite-icon-gui-resources sprite-icon-gui-search sprite-icon-gui-tick sprite-icon-gui-warning sprite-icon-live-updates-results-metrics-col sprite-icon-multi-user-spaces-col sprite-icon-social-x sprite-icon-tech-apachekafka sprite-linkedin sprite-quote sprite-stackoverflow sprite-twitter sprite-youtube