A backend message bus and a client-facing realtime platform solve different problems. Here is where each one actually fits.
Google Cloud Pub/Sub is server-to-server messaging: enormous regional throughput, replay, exactly-once options, and IAM auth. What it does not do is talk to browsers. If your question is "how do my users see this event live", Pub/Sub is half the answer and you build the other half.
When Foony fits
Browsers and mobile clients connect directly. Pub/Sub has no untrusted-client story, its SDKs authenticate with IAM service accounts, so reaching users means building and operating your own WebSocket edge in front of it.
Channel-scoped user auth. Foony tokens grant per-channel operations to end users. IAM grants are per service principal, not per user per topic.
Presence, typing, occupancy, and the rest of the user-facing surface exists.
Small messages price sanely: Pub/Sub bills a 1 KB minimum per request, so a 100-byte chat message bills as 1 KB, and Google’s own example prices a modest workload at about $2,000 a month.
When Google Cloud Pub/Sub fits
It is a data pipeline, not a chat pipe: multi-GB-per-second regional throughput, 31-day retention with seek and replay, and direct BigQuery and Cloud Storage export subscriptions.
Exactly-once delivery and ordering keys with contractual semantics for backend consumers.
Your producers and consumers are all services inside GCP already.
Fit
Foony
Google Cloud Pub/Sub
Talks to browsers
Yes, that is the product
No, server-side SDKs with IAM auth only
End-user auth
Per-channel capabilities in short-lived tokens
IAM, per service principal
Presence
Built in, with automatic re-entry on reconnect
None
Replay
Per-prefix channel rules, up to 30 days
Seek and snapshots, up to 31 days
Throughput ceiling
150,000 messages/second on the largest plan
Multi-GB/second per region
Pricing
Foony
Google Cloud Pub/Sub
Model
Per message, in and out
$40 per TiB of throughput, 1 KB minimum per request
Competitor numbers last checked July 2026. If something has drifted, tell us and we will fix it.
Moving over
These two more often coexist than replace each other: Pub/Sub carries events between services, and the service that owns an event publishes the user-visible part to a Foony channel. Teams that built a custom WebSocket edge in front of Pub/Sub can usually retire that edge, which is the actual migration.
Try it on the free tier
9M messages a month, presence, history, and the Pusher-compatible API are all on the free plan. No card required.