<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/posts/milan-jovanovi--yw4phfmfs" -->

---
title: Milan Jovanović | daily.dev
description: When scaling a SignalR application to multiple instances behind a load balancer, notifications can silently drop because each server only knows about its own...
canonical: https://daily.dev/posts/milan-jovanovi--yw4phfmfs
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:type: website
og:site_name: daily.dev
og:title: Milan Jovanović | daily.dev
og:description: When scaling a SignalR application to multiple instances behind a load balancer, notifications can silently drop because each server only knows about its own...
og:url: https://daily.dev/posts/milan-jovanovi--yw4phfmfs
og:image: https://api.daily.dev/og/posts/YW4pHFMFs.png
og:image:alt: Milan Jovanović
og:image:width: 1200
og:image:height: 630
og:locale: en
---

> ## Documentation Index
> Fetch the complete documentation index at: https://daily.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Milan Jovanović

**[Milan Jovanović](https://daily.dev/sources/milanjovanovic)** · 6 min read · 0 upvotes · 0 comments

## Summary

When scaling a SignalR application to multiple instances behind a load balancer, notifications can silently drop because each server only knows about its own connections. The fix is a Redis backplane — a shared pub/sub layer that lets all server instances route messages to any connected client. Setup requires just one method call: chaining `.AddStackExchangeRedis()` onto `AddSignalR()`. Two important caveats: sticky sessions are still required for the WebSocket negotiation handshake, and messages are not buffered if Redis goes down temporarily. The post also compares the Redis backplane to Azure SignalR Service, recommending the former for self-hosted or latency-sensitive setups.

## Full article

daily.dev links to this article rather than hosting it. Read it at the original source: <https://www.milanjovanovic.tech/blog/scaling-signalr-with-redis-backplane>

---

Tags: [#.net](https://daily.dev/tags/.net), [#redis](https://daily.dev/tags/redis)

[View this post on daily.dev](https://daily.dev/posts/milan-jovanovi--yw4phfmfs)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@type":"TechArticle","headline":"Milan Jovanović","url":"https://daily.dev/posts/milan-jovanovi--yw4phfmfs","mainEntityOfPage":{"@type":"WebPage","@id":"https://daily.dev/posts/milan-jovanovi--yw4phfmfs"},"datePublished":"2026-03-20T20:26:53.601Z","dateModified":"2026-03-20T20:27:19.824Z","description":"When scaling a SignalR application to multiple instances behind a load balancer, notifications can silently drop because each server only knows about its own...","image":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/eaacf1d3640854163e63d00c414f9a5d?_a=AQAEuop","thumbnailUrl":"https://media.daily.dev/image/upload/f_auto,q_auto/v1/posts/eaacf1d3640854163e63d00c414f9a5d?_a=AQAEuop","isAccessibleForFree":true,"articleSection":"Milan Jovanović","inLanguage":"en","publisher":{"@type":"Organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180}},"author":{"@type":"Organization","name":"Milan Jovanović","logo":"https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/78d8abfb692746538410dee47f93e566","url":"https://daily.dev/sources/milanjovanovic"},"commentCount":0,"discussionUrl":"https://daily.dev/posts/milan-jovanovi--yw4phfmfs","interactionStatistic":[{"@type":"InteractionCounter","interactionType":{"@type":"LikeAction"},"userInteractionCount":0},{"@type":"InteractionCounter","interactionType":{"@type":"CommentAction"},"userInteractionCount":0}],"keywords":".net,redis","timeRequired":"PT6M"}
{"@context":"https://schema.org","@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Milan Jovanović","item":"https://daily.dev/sources/milanjovanovic"},{"@type":"ListItem","position":3,"name":"Milan Jovanović"}]}
```

