Кукольник: включает ли параметр page.goto waitUntil открытые веб-сокеты? - PullRequest
0 голосов
/ 21 января 2019

Я использую узел js v10 и puppeteer v1.10 в контейнере Docker.

Мне нужно сделать снимок экрана с страницей, на которой открыто 2 веб-сокета.Они возвращают некоторые данные, как только страница загружается, но после этого они остаются бездействующими.Когда я прерываю запросы к конечной точке веб-сокета, страница загружается правильно, и я могу сделать снимок экрана.Если я этого не сделаю, кукловод выдаст ошибку тайм-аута (Navigation Timeout Exceeded: 120000ms).Включает ли опция page.goto(url, {waitUntil: 'networkidle0'}); веб-сокеты (которые в этом случае соединение остается открытым, но бездействует вечно) или просто обычные запросы к ресурсам, например, css / image / api?

В данный момент явозможность сделать снимок экрана, если я установлю:

page.on('request', (request) => {
    if(request.url().includes('socket.io')) {
      console.log("Blocking websocket: ", request.url());
      request.abort();
      return;
    }
  request.continue();
});
page.goto(url, {waitUntil: 'networkidle0'});

1 Ответ

0 голосов
/ 22 января 2019

Перед открытием соединения через веб-сокет socket.io попытается выполнить опрос с использованием ajax, а затем по другому запросу переключит протоколы, содержащие «101 Switching Protocols».

waitUntil не будет ждать подключения к веб-сокету, потому что они обычно ожидают навсегда.Вы правильно заблокируете его, если сервер websocket не работает.

Вот как это выглядит на вкладке сети.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...