2014-03-19 5 views
5

Ich habe ein komplexes Szenario.Was passiert, wenn der SignalR-Hub auf mehreren Servern gehostet wird?

Ich habe eine Webanwendung, die SignalR HUB halten wird.

Diese Anwendung wird auf mehreren Servern gehostet.

Für z. Hub1 wird auf ServerA und ServerB gehostet.

Sagen wir, ich habe nur wenige Clients auf ServerA und ServerB.

Wenn jemand eine Nachricht auf ServerA ausstrahlt, dann wird ServerB diese Nachricht bekommen können (Selbst wenn ich passendes ConnectionID passiere)?

Antwort

4

Ja, aber Sie müssen eine Backplane verwenden. Es gibt einige unterstützte, wie Redis oder SQL.

Ich habe die SQL-Backplane verwendet, die eine Tabelle und eine BLOB-Datenspalte verwendet, die alle Benutzer/Gruppen/Hubs/Nachrichten zwischen allen Instanzen von SignalR synchronisiert. In application_start fügen Sie einfach eine einzelne Codezeile hinzu, um die SQL-Backplane zu verwenden, und hinter den Kulissen ist alles für Sie erledigt.

Wenn Leistung extrem wichtig ist, gehen Sie mit Redis. Wenn Sie Einfachheit und einfache Konfiguration wünschen, gehen Sie mit SQL.

http://www.asp.net/signalr/overview/signalr-20/performance-and-scaling/scaleout-with-sql-server