# Publish and Subscribe to Realtime Data on Vercel

**Author:** Rich Haines

---

Realtime communication allows events to be streamed directly to your application by maintaining a single connection. WebSockets enable online experiences like collaborative document editing, multiplayer games, and interactive chatrooms.

The two main approaches to apply this model to stateless serverless functions are:

- [Serverless Functions](https://vercel.com/docs/concepts/functions/serverless-functions) have maximum execution limits and should respond as quickly as possible. They should not subscribe to data events. Instead, we need a _client_ that **subscribes** to data events and a _serverless function_ that **publishes** new data. Consider using one of the providers below to implement this approach.
  
- Rather than pushing data, you can fetch realtime data on-demand. For example, the Vercel dashboard delivers realtime updates using [SWR](https://swr.vercel.app/).
  

## Providers

These providers can help you integrate realtime communication into your Vercel application using Serverless Functions.

- [Ably](https://ably.com/)
  
- [Convex](http://convex.dev/)
  
- [Liveblocks](https://liveblocks.io/)
  
- [Partykit](https://www.partykit.io/)
  
- [Pusher](https://vercel.com/guides/deploying-pusher-channels-with-vercel)
  
- [PubNub](https://www.pubnub.com/)
  
- [Firebase Realtime Database](https://firebase.google.com/docs/database)
  
- [TalkJS](https://talkjs.com/)
  
- [SendBird](https://sendbird.com/)
  
- [Supabase](https://supabase.com/realtime)

---

[View full KB sitemap](/kb/sitemap.md)
