Сбой длинных HTTP-вызовов в приложениях панели задач на клиенте Office для Mac

Мы создали надстройку панели задач Excel, которая взаимодействует с нашим сервером для получения данных из внешнего источника. Для нескольких вызовов серверу требуется более минуты, чтобы ответить. Для таких вызовов надстройка Excel (которая запускается в Mac Desktop Excel 2016) не получает никакого ответа (либо об успешном, либо об отказе, либо о тайм-ауте), даже если его отправил сервер.

Примечание. Это происходит только тогда, когда надстройка запускается в Mac Desktop Excel. В других системах и браузерах работает нормально.

У клиента Office для Mac низкий порог времени ожидания? Если так, есть ли способ увеличить его? Есть ли другой обходной путь для этого?

1 ответ

Элемент управления WebKit, который мы используем для размещения надстройки, не позволяет нам переопределить время ожидания по умолчанию для веб-запросов. Тайм-аут по умолчанию составляет 60 секунд на Mac. Если вам нужно, чтобы запрос длился более 60 секунд, я убедился, что WebKit соблюдает свойство timeout XMLHttpRequest в OSX 10.11.5. Этот запрос не будет остановлен в течение 120 секунд:

var xhr = new XMLHttpRequest();
var startDate = new Date();
xhr.open('GET', url, true);

xhr.timeout = 120000; // time in milliseconds

xhr.onload = function () {
  console.log((new Date() - startDate) + " milliseconds to return.");
};

xhr.ontimeout = function (e) {
  console.error("error");
};

xhr.send(null);

Обратите внимание, что это не работает, начиная с Mac OS Sierra 10.12.1. Кажется, в WebKit произошел регресс. Ошибка отслеживания открывается здесь: https://bugs.webkit.org/show_bug.cgi?id=163814.

Другие вопросы по тегам