2017-07-05 71 views
15

Widziałem następujące:umożliwić użytkownikom app WebRTC ściągnąć WebRTC logów poprzez javascript

chrome://webrtc-internals 

Jednakże szukam sposób, aby pozwolić użytkownikom kliknij przycisk w aplikacji internetowej do albo pobierz lub - najlepiej - POST Logi WebRtc do punktu końcowego wypalonego w aplikacji. Chodzi o to, że mogę umożliwić użytkownikom nietechnicznym udostępnianie dzienników technicznych za pomocą kliknięcia przycisku interfejsu użytkownika.

Jak można to osiągnąć?

Uwaga: nie powinno to zależeć od przeglądarki Chrome; Chrom będzie również używany, ponieważ aplikacja zostanie opakowana w Electron.

+1

Być może ta odpowiedź powinna pomóc: [Czy istnieje interfejs API dla zmiennych 'chrome: // webrtc-internals /' w JavaScript?] (Https://stackoverflow.com/a/24070353/165674) –

+1

@DheerajV. S. dzięki - za pomocą tego zbudowałem niewielki ekstraktor statystyk zamieszczony poniżej. – SB2055

Odpowiedz

0

Czytanie js źródła chrome://webrtc-internals, zauważyłem, że strona internetowa używa metody o nazwie chrome.send() do wysyłania wiadomości takich jak chrome.send('enableEventLogRecordings');, aby wykonać polecenia rejestrowania. Według here:

chrome.send() jest prywatnym funkcja dostępna tylko na wewnętrzne chromowane stronach.

więc funkcja jest piaskownicy, która sprawia, że ​​dostęp do niego nie jest możliwe

3

To jest to, co skończyło się stosując (zastąpić nokaut z podkreśleniem lub cokolwiek):

  connectionReport.signalingState = connection.signalingState; 
      connectionReport.stats = []; 
      connection.getStats(function (stats) { 
       const reportCollection = stats.result(); 
       ko.utils.arrayForEach(reportCollection, function (innerReport) { 
        const statReport = {}; 
        statReport.id = innerReport.id; 
        statReport.type = innerReport.type; 
        const keys = innerReport.names(); 
        ko.utils.arrayForEach(keys, function (reportKey) { 
         statReport[reportKey] = innerReport.stat(reportKey); 
        }) 
        connectionReport.stats.push(statReport); 
       }); 
       connectionStats.push(connectionReport); 
      }); 

UPDATE:

Wygląda na to, że ten mechanizm getStats wkrótce zostanie wycofany.

3

Musisz napisać równoważnik javascript, który przechwytuje wszystkie wywołania interfejsu API RTCPeerConnection. rtcstats.js robi to, ale wysyła wszystkie dane do serwera. Jeśli zastąpisz to zachowanie przechowywaniem w pamięci, powinieneś być dobry.

+0

Jakie są Twoje przemyślenia na temat rozwiązania, które napisałem? Czy dałoby to wgląd w potrzeby debugowania większości problemów związanych z WebRTC? – SB2055

+0

W większości przypadków widziałem, że śledzenie API było bardziej przydatne niż wynik getStats - patrz https://testrtc.com/webrtc-api-trace/. Korzystasz również ze starszej wersji interfejsu API Chrome, której należy unikać. –

+0

Czy masz przykład, który pokazuje, jak zrzucić te dzienniki klienta (lub nawet jak z niego korzystać w ogóle - nie widzę wiele udokumentowane wokół konfiguracji)? Myślę, że byłoby to najbardziej przydatne dla przyszłych czytelników. – SB2055