2014-03-19 1 views
5

У меня один сложный сценарий.Что делать, если концентратор SignalR размещен на нескольких серверах?

У меня есть одно веб-приложение, которое будет содержать SignalR HUB.

Это приложение будет размещено на нескольких серверах.

Для примера. Hub1 будет размещаться на ServerA и ServerB.

Скажем, у меня мало клиентов на серверах ServerA и ServerB.

Если какое-то сообщение передается на сервере ServerA, то ServerB сможет получить это сообщение (Даже если я передаю соответствующий идентификатор ConnectionID)?

ответ

5

Я думаю, что в SignalR 2.0 вы можете посмотреть Introduction to Scaleout in SignalR.

Я не тестировал его, но в документе говорится, что, например, Microsoft.AspNet.SignalR.SqlServer будет выполнять балансировку нагрузки для вас с использованием SQL-сервера.

Ref: http://www.asp.net/signalr/overview/signalr-20/performance-and-scaling/scaleout-in-signalr

4

Да, но вы должны использовать заднюю панель. Есть несколько поддерживаемых, таких как Redis или SQL.

Я использовал объединительную панель SQL, в которой используется столбец данных и столбца BLOB, который будет синхронизировать всех пользователей/групп/хабов/сообщений между всеми экземплярами SignalR. На application_start вы просто добавляете одну строку кода для использования объединительной платы SQL, и все это позаботится о вас за кулисами.

Если выступление вызывает особую озабоченность, пойдите с Редисом. Если вы хотите простоту и удобство настройки, перейдите к SQL.

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