Длительный опрос Остановить другой запрос на 1 или 2 минуты
Во время создания системы чата я использую запрос на длительный срок, чтобы получить сообщение, и запрос jquery для отправки сообщения следующим образом:
*Send: *
$("#btn").click(function () {
$.ajax({
type: "POST",
url: "Chat.aspx/Insert",
data: "{ 'Str' :'" + $("#txtStr").val() + "' }",
contentType: "application/json; charset=utf-8",
dataType: "json",
success: function (data) {
},
error: function () {
}
});
});
Receive :
function Refresh() {
$.ajax({
type: "POST",
url: "Chat.aspx/GetRecords",
data: "{ 'Id' : " + $("#hdnV1").val() + "}",
success: function (data) {
$.each($(data.d), function () {
//Show it to user
});
},
complete: function () {
return Refresh();
},
contentType: "application/json; charset=utf-8",
dataType: "json",
traditional: true,
async: true
});
}
и это мой код на стороне сервера для получения сообщений:
[WebMethod]
public static object GetRecords(int Id)
{
TestEntities db = new TestEntities();
int count = 0;
while (true)
{
if (count++ >= 300)
return null;
System.Threading.Thread.Sleep(1000);
var list = db.Commets.Where(rec => rec.Id > Id).Select(rec => new { Id = rec.Id, Str = rec.Str }).ToList();
if (list.Count > 0)
return list;
}
}
Когда пользователь что-то пишет и нажимает кнопку «Отправить», запрос переходит в состояние ожидания, а я - потому что выполняется запрос с большим сроком службы.
Я проверяю их в firebug, есть кто-нибудь там, чтобы помочь мне!?! Для более подробной информации, пожалуйста, прокомментируйте меня, и извините за мой плохой английский синтаксис, я новичок в английском
Спасибо