Метод концентратора javascript SignalR не срабатывает в IE после периода бездействия

У меня есть концентратор SignalR (v0.5.2), который отправляет сообщение клиенту JavaScript.

c#

public Task SendData(ClassName classData){
    return Clients["groupid"].renderData(classData);
}

JavaScript

var _client = $.connection.myHub;
_client.renderData = function(data){
    /* do stuff */
};

$.connection.hub.start({ transport:activeTransport }, function(){ });

Все работает нормально, за исключением того, что после периода бездействия в IE9 метод JavaScript не запускается.

Я просмотрел тело ответа сетевого журнала /signalr/connect?transport=foreverFrame в инструментах разработчика IE9 и вижу, что получаю сообщение:

<script>r(c, {"MessageId":"54","Messages":[{"Hub":"myHub","Method":"renderData","Args":[....]]}],"Disconnect":false,"TimedOut":false,"TransportData":{"Groups":["LiveBid.999"]}});</script>
<div>{"MessageId":"54","Messages":[{"Hub":"myHub","Method":"renderData","Args":[....]]}],"Disconnect":false,"TimedOut":false,"TransportData":{"Groups":["LiveBid.999"]}}</div>

Тем не менее, метод JavaScript никогда не срабатывает?


person Tim B James    schedule 25.07.2012    source источник
comment
Это случайно не происходит точно через 10-минутные интервалы, не так ли? У меня аналогичная проблема: у меня есть часы на стороне сервера, которые отображаются на клиенте, и они зависают каждые 10 минут (потому что изменения перестают поступать). Время, в которое он зависает, различно для разных пользователей, но для одного и того же пользователя он всегда зависает в одно и то же время (минуты % 10): (секунды).   -  person Nathan    schedule 26.07.2012
comment
@ Натан, да, кажется, каждые 10 секунд.   -  person Tim B James    schedule 26.07.2012
comment
@ Натан, посмотри мой ответ ниже. можете ли вы сообщить мне, есть ли в вашем проекте файл Modernizr?   -  person Tim B James    schedule 27.07.2012


Ответы (1)


После того, как я потратил много времени на отладку, оказалось, что проблема связана с версией моего файла Modernizr.

Я не очень хорошо знаком с тем, как работают внутренние компоненты Modernizer, однако я создал пользовательскую версию файла, в которой есть только функции элементов css/html5, и в настоящее время она работает с SignalR и foreverFrame.

person Tim B James    schedule 26.07.2012
comment
Я сомневаюсь, что это решит мою проблему: я никогда не использовал Modernizr, поэтому его не будет в моем проекте. Имейте в виду, однако, что для меня эту ошибку действительно трудно определить. Он появляется только для определенных комбинаций [клиент, сервер, версия сборки] и только в IE. Я надеюсь, что ваша проблема не вернется к вам. :) - person Nathan; 31.07.2012