У меня есть приложение MVC 4 с SignalR, которое одновременно подключено к множеству Android-планшетов. Когда устройства переходят в спящий режим, некоторые из соединений теряются, а некоторые поддерживаются, по-видимому, без шаблона.Соединение SignalR потеряно, когда устройство Android отключено
У меня есть следующий код на представлении, чтобы попытаться перезапустить соединения при отключении:
$.connection.hub.disconnected(function() {
setTimeout(function() {
$.connection.hub.start();
}, 5000);
});
Я также следующие строки в методе Application_Start():
GlobalHost.Configuration.DisconnectTimeout = TimeSpan.FromHours(6);
GlobalHost.Configuration.ConnectionTimeout = TimeSpan.FromHours(6);
Я понимаю что 6 часов чрезмерны, это было просто сделано, чтобы попытаться обеспечить, чтобы соединение никогда не было таймаутом во время тестирования.
У меня также есть планшеты, предназначенные для поддержания Wi-Fi-соединения во время сна.
Однако, когда таблетки укладываются в сон, а затем пробуждаются всего несколько минут спустя, некоторые соединения по-прежнему будут активны, а другие - нет.
Как я могу гарантировать, что соединение SignalR будет либо сохранено, либо перезапущено, когда устройства возвращаются из сна?
Кажется, это ужасная идея. Тем более, что вы никогда не будете поднимать разъединение на сервере (только через 3 часа). Поскольку сервер не очищает соединения, вы можете легко затопить его, и у него закончится нехватка памяти. – davidfowl
Я согласен, но, как я уже сказал, это будет работать только в контролируемой среде, где я точно знаю, сколько соединений будет существовать. Я бы предпочел, чтобы планшеты снова включались, когда они возвращались из сна, но никакое решение, которое я нашел, не будет работать в 100% случаев – cmarcum
Отлично. Если вы 100% осведомлены о последствиях, тогда все в порядке. – davidfowl