Сбой длинных 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.