Я получил ответ здесь: ASP.NET AJAX CHAT
Имена ниже, на которые я ссылаюсь, являются ссылками сверху.
Я думаю, что настоящая проблема былас отметкой времени и асинхронным поведением $ .post.после вызова метода «GetMessages ()», даже если предыдущий запрос на получение сообщения чата не был завершен, вызов anathor к тому же методу, который использовался для запуска, из-за установки времени ожидания для метода «GetMessages ()» вне метода $ .post.В моем вопросе вы можете видеть, что время ожидания для метода "GetMessages ()" установлено вне метода $ .post.Теперь я установил тайм-аут для метода «GetMessages ()» внутри метода $ .post.так что следующий вызов GetMessages () произойдет только через 3 секунды после завершения текущего метода $ .post.Я разместил код ниже.
var t;
function GetMessages() {
var LastMsgRec = $("#hdnLastMsgRec").val();
var RoomId = $("#hdnRoomId").val();
//Get all the messages associated with this roomId
$.post("/Chat/GetMessages", { roomId: RoomId, lastRecMsg: LastMsgRec }, function(Data) {
if (Data.LastMsgRec.length != 0)
$("#hdnLastMsgRec").val(Data.LastMsgRec);
if (Data.Messages.length != 0) {
$("#messagesCont").append(Data.Messages);
if (Data.newUser.length != 0)
$("#usersUl").append(Data.newUser);
$("#messagesCont").attr({ scrollTop: $("#messagesCont").attr("scrollHeight") - $('#messagesCont').height() });
$("#userListCont").attr({ scrollTop: $("#userListCont").attr("scrollHeight") - $('#userListCont').height() });
}
else {
}
t = setTimeout("GetMessages()", 3000);
}, "json");
}
Я в дополнение к этому я также изменил несколько вещей.По предложению ignatandrei я поместил $ ("# hdnLastMsgRec"). Val (Data.LastMsgRec);сразу после функции (Данные) {.
, а также
, как сказал MikeSW, я изменил процесс поиска данных.Ранее я извлекал данные на основе временного промежутка (извлекал все данные, связанные с этим идентификатором комнаты, который имеет больший временной промежуток, чем последний раз извлеченные данные полученного сообщения), но теперь я отслеживаю идентификатор сообщения.Теперь я извлекаю только те данные, у которых идентификатор сообщения больше, чем у последнего извлеченного идентификатора сообщения.
и думаю, что в моем интранете пока нет повторяющихся и отлично работающих приложений чата.
Я все еще должен видеть его производительность при развертывании в Интернете.
Я думаю, что это решило мою проблему.
Я все еще буду тестировать систему и сообщу вам, если есть какие-либопроблема.