Rate limit pointer updates to avoid hammering the server

(imported from commit e1add1b64779f3d0caf5426eb99233e78de278ae)
This commit is contained in:
Zev Benjamin 2012-10-22 12:28:40 -04:00
parent 66d7678423
commit 35bb3613cd
1 changed files with 16 additions and 2 deletions

View File

@ -204,17 +204,31 @@ function select_and_show_by_id(message_id) {
select_message(rows.get(message_id), true); select_message(rows.get(message_id), true);
} }
var last_message_id_sent = -1;
var message_id_to_send = -1;
// We only send pointer updates every second to avoid hammering the
// server
function send_pointer_update() {
if (message_id_to_send !== last_message_id_sent) {
$.post("json/update_pointer", {pointer: message_id_to_send});
last_message_id_sent = message_id_to_send;
}
setTimeout(send_pointer_update, 1000);
}
$(setTimeout(send_pointer_update, 1000));
function update_selected_message(message) { function update_selected_message(message) {
$('.' + selected_message_class).removeClass(selected_message_class); $('.' + selected_message_class).removeClass(selected_message_class);
message.addClass(selected_message_class); message.addClass(selected_message_class);
var new_selected_id = rows.id(message); var new_selected_id = rows.id(message);
if (!narrow.active() && new_selected_id !== selected_message_id) { if (!narrow.active() && new_selected_id !== message_id_to_send) {
// Narrowing is a temporary view on top of the home view and // Narrowing is a temporary view on top of the home view and
// doesn't permanently affect where you are. // doesn't permanently affect where you are.
// //
// We also don't want to post if there's no effective change. // We also don't want to post if there's no effective change.
$.post("json/update_pointer", {pointer: new_selected_id}); message_id_to_send = new_selected_id;
} }
selected_message_id = new_selected_id; selected_message_id = new_selected_id;
selected_message = message; selected_message = message;