What is SignalR?
SignalR is a technology that enables you to add realtime web functionality to apps, primarily over WebSockets. SignalR comes in several different flavors:
ASP .NET SignalR - a library for ASP. NET developers. Note that this version is largely outdated (only critical bugs are being fixed, but no new features are being added).
ASP .NET Core SignalR - an open-source SignalR library; unlike ASP. NET SignalR, this version is actively maintained.
Azure SignalR Service - the fully managed cloud version.
You can use SignalR to engineer features such as:
Collaborative apps (e.g., whiteboards)
Realtime location updates
High-frequency updates (for use cases like realtime multiplayer gaming and streaming live score updates)
5 alternatives to SignalR
We’ll now look at alternatives to SignalR - similar technologies that allow you to build realtime functionality for end-users. Here are the five alternatives we’ll cover:
The Ably serverless WebSocket platform
Azure Web PubSub
DIY WebSocket solution
Ably is a realtime experience infrastructure provider. Our realtime APIs and SDKs help developers power multiplayer collaboration, chat, data synchronization, data broadcast, notifications, and realtime location tracking at internet scale, without having to worry about managing and scaling messy realtime infrastructure.
Key Ably features and capabilities
Ably is underpinned by a globally-distributed network of datacenters and edge acceleration points of presence.
Client SDKs for every major programming language and development platform.
Pub/sub APIs with rich features, such as message delta compression, multi-protocol support (WebSockets, MQTT, Server-Sent Events), automatic reconnections with continuity, presence, and message history.
Guaranteed message ordering and delivery.
Global fault tolerance and a 99.999% uptime SLA.
< 65ms round-trip latency for 99th percentile.
Elastic scalability to handle millions of concurrent clients.
Here are some more resources for further reading:
Learn more about the Ably platform (features and system properties).
Explore customer stories and find out how organizations like HubSpot, Mentimeter, and Genius Sports benefit from trusting Aby with their realtime needs.
Sign up for a free account and see what Ably can do for you.
Azure Web PubSub
Generally available as of November 2021, Azure Web PubSub is a fully managed realtime messaging service. It allows you to create scalable, loosely coupled applications for use cases such as chat, live broadcasting, and IoT dashboards. Azure Web PubSub supports the WebSocket transport and uses the Pub/Sub messaging pattern.
Azure Web PubSub pros
Supports both native and serverless WebSockets (with Azure Functions).
Claims it’s designed for large-scale applications and highly available architectures.
Supports a large variety of clients, such as browsers, desktop and mobile apps, or IoT devices; you can use any standard WebSocket client (built in your language of choice) with Azure Web PubSub.
Azure Web PubSub cons
Azure Web PubSub is a regional service, which can negatively impact its performance, reliability, and availability.
Azure Web PubSub doesn’t provide a robust messaging QoS. Message ordering and guaranteed delivery are theoretically only possible when you use the reliable WebSocket subprotocols (Reliable Protobuf WebSocket and Reliable JSON WebSocket). However, both these subprotocols are currently in developer preview, and some changes are to be expected in the future.
Lacks features such as presence, message history (incredibly helpful for use cases such as chat), and delta compression (useful for reducing bandwidth costs and increasing throughput).
DIY WebSocket solution
WebSocket is a realtime technology that enables bi-directional, full-duplex communication between client and server over a persistent, single-socket connection.
A WebSocket connection starts as an HTTP request/response handshake. If this initial handshake is successful, the client and server have agreed to use the existing TCP connection that was established for the HTTP request as a WebSocket connection. This connection is kept alive for as long as needed (in theory, it can last forever), allowing the server and the client to independently send data at will.
DIY WebSocket solution pros
WebSocket is a mature, widely-used technology; it emerged over a decade ago and has been extensively battle-tested. Most programming languages, development platforms, and browsers support WebSockets.
The WebSocket technology allows for the implementation of application-level protocols (on top of WebSockets), and extensions for additional functionality (such as pub/sub messaging). Building on raw WebSockets means you have the flexibility of designing your own WebSocket-based protocol and capabilities, tailor-made for your specific use case and needs.
Before WebSocket, HTTP techniques like AJAX long polling and Comet were the standard for building realtime apps. Compared to HTTP, WebSocket eliminates the need for a new connection with every request, drastically reducing the size of each message (no HTTP headers). This helps save bandwidth, improves latency, and makes WebSockets less taxing on the server side compared to HTTP.
DIY WebSocket solution cons
Certain environments (such as corporate networks with proxy servers) will block WebSocket connections. You will most likely have to consider supporting fallback transports for these scenarios.
Unlike HTTP, WebSocket is stateful. This can be tricky to handle, because it requires the server layer to keep track of each individual WebSocket connection and maintain state information.
Building a reliable DIY WebSocket solution that you can trust to deliver at scale is expensive, time-consuming, and requires significant engineering effort.
Pusher provides hosted APIs to build realtime features for end-users. Pusher has two main products:
Channels - pub/sub channels over WebSockets.
Beams - an API for cross-platform push notifications for iOS, Android, and Web.
Pusher primarily uses WebSockets, but will also fall back to HTTP in environments where WebSockets aren’t supported.
SDKs for every major development platform and programming language, giving you the flexibility of integrating Pusher in your preferred language.
Features such as presence (useful, for example, for chat apps), webhooks to capture and respond to client events as they happen, and end-to-end encryption for enhanced security.
No superior QoS messaging guarantees; for example, if a message is published whilst a client is briefly disconnected (such as going through a tunnel or changing networks), then the message published over Pusher will never arrive to that client.
Pusher does not provide integrations with services such as event streaming platforms (e.g., Kafka) and serverless platforms (e.g., AWS Lambda, Azure Functions, etc.)
Pusher requires you to choose a single datacenter for an app to reside in. All realtime traffic must therefore be routed through that single datacenter, regardless of a user’s location. This has implications for performance, reliability, and availability.
Created back in 2010, Socket.IO is a well-known open-source library that enables low-latency, bi-directional communication between web clients and servers. Socket.IO is built on top of the WebSocket protocol and provides additional capabilities such as automatic reconnections, or falling back to HTTP long polling.
Multiplexing (namespaces), which enables you to minimize the number of TCP connections used, and broadcast support (rooms), to more efficiently distribute data to clients.
Disconnection detection (configurable Ping/Pong heartbeat mechanism) and automatic reconnections.
Integrations with various solutions for horizontal scaling: Redis, MongoDB, Postgres, AMQP / RabbitMQ. Note that you have to use one of these when you scale beyond a single Socket.IO server, to pass events between nodes, and ensure that events are properly routed to all clients.
Socket.IO does not guarantee exactly-once messaging semantics. By default, an at-most-once guarantee is provided. Socket.IO can also be configured to provide at-least-once guarantees, although this brings additional engineering complexity - you have to use acknowledgments, timeouts, assign a unique ID to each event, and persist events in the database.
Limited native security features - for example, Socket.IO doesn't provide end-to-end encryption, and it doesn't offer a mechanism to generate and renew tokens for authentication.
Designed to work in a single region, rather than a multi-region architecture. This can lead to issues such as increased latency (if you have users in different parts of the world), and system downtime - what happens if the datacenter/region where you have your Socket.IO servers goes through an outage?
We hope you’ve found this article useful as a starting point for discovering alternatives to SignalR. We encourage you to conduct an in-depth analysis and evaluation to see which one of the solutions we’ve covered is the best choice for your specific use case.
If you’re looking for a scalable WebSocket service to build live experiences for end-users, and you don’t want to worry about managing complex infrastructure, we invite you to give Ably a go.
SignalR vs. WebSocket: Key differences and which to use
We compare SignalR and WebSocket, two popular realtime technologies. Discover their advantages and disadvantages, use cases, and key differences.
Scaling SignalR: Available options and key challenges
Learn how to scale ASP.NET Core SignalR and Azure SignalR Service, and discover the challenges you’ll face along the way.
The best AWS AppSync alternatives to consider in 2023
Read about WebSocket solutions you can use instead of AWS AppSync to deliver realtime experiences like live chat and multiplayer collaboration.