2013-11-01 6 views
1

Я столкнулся с ситуацией, когда событие OnDisconnected моего концентратора происходит после действия asv.net mvc на странице обновления для браузера Chrome, однако для FireFox и IE поведение отличается, событие запускается перед связанными действиями asp.net mvc. Есть ли какое-либо фиксированное правило для этого?Контактор SignalR OnDisconnected время срабатывания в разных браузерах после перезагрузки страницы

Порядок для меня важен, по крайней мере, я ожидаю, что он будет одинаковым для всех браузеров, есть ли способ обеспечить тот же порядок?

+0

У вас есть ответ на вашу проблему? Ниже приведен не тот ответ, который я искал. Я столкнулся с той же проблемой, что и в том, что Chrome запускает OnDisconnected после действия MVC. У вас есть взломать это? – bdparrish

+0

Ну, мне пришлось внести изменения в архитектуру, чтобы мне не пришлось полагаться на определенный порядок. На данный момент у меня нет решения, но я полагаю, что я использовал базу данных для сохранения информации о событии, а затем обработал ее через определенный промежуток времени (для этого у меня был таймер запуска). Таким образом, это было не полностью в режиме реального времени, но с задержкой в ​​пару секунд, однако это помогло мне оставаться независимым от ордера на действие/событие. – CoinFlip

ответ

2

MVC действие или нет вы не можете гарантировать заказ.

Вот почему: Когда пользователь пытается перейти от страницы с активным соединением SignalR, SignalR затем предпримет попытку «лучшего усилия» уведомить сервер о том, что клиентское соединение будет остановлено. Если наша попытка «лучшего усилия» не удастся достичь сервера, сервер «забудет» о пользователе после конфигурируемого «DisconnectTimeout» позже, когда произойдет событие OnDisconnected. Если наша попытка «лучшего усилия» успешна, событие OnDisconnected будет немедленно срабатывать.

Увидев, что это поведение выполняется, поскольку пользователь оставляет страницу и зависит от клиента, она может быть непоследовательной.

Надеюсь, это поможет!

Смежные вопросы