2011-04-22 8 views

Odpowiedz

184

Narzędzia programistów Chrome mogą teraz wyświetlać ramki WebSocket, a także sprawdzać dane, jeśli ramki nie są binarne.

Proces:

  1. Uruchom Chrome Narzędzia dla programistów
  2. Załaduj swoją stronę i inicjować połączenia websocket
  3. kliknij kartę Sieć .
  4. Wybierz połączenie websocket z listy po lewej stronie (będzie mieć status „101 protokołów przełączania”.
  5. Kliknij kartę podrzędną Ramki. Binarne ramki pokaże się z długości i długotrwałych pieczęć i wskazanie, czy są one maskowane. ramki tekstowe pokaże także zawartości ładunku.

Jeśli połączenie websocket używa ramek binarnych a następnie będzie prawdopodobnie nadal chcesz używać Wireshark do debugowania połączenia. Wireshark 1.8.0 dodany paraszyta i filtrowanie obsługa WebSockets. Alternatywnie można znaleźć w tym other answer.

+1

Czy wiesz, jak używać Wireshark do tego? Nigdy tak naprawdę go nie używałem i wygląda na to, że pokazuje cały ruch sieciowy i pokazuje surowe pakiety. – mellowsoon

+2

Możesz ograniczyć przechwytywanie do pojedynczego portu za pomocą [filtrów przechwytywania] (http://wiki.wireshark.org/CaptureFilters). Alternatywnie, po uzyskaniu przechwytywania, powinieneś być w stanie kliknąć prawym przyciskiem myszy na przechwyconej klatce, która jest częścią sesji i wybrać opcję pokazania tylko tej sesji. – kanaka

+1

Niestety używanie WireSharka przy użyciu localhost w Windows wymaga przeskoczenia przez obręcze, aby uruchomić go. Zobacz http://wiki.wireshark.org/CaptureSetup/Loopback –

3

Narzędzia dla programistów Chrome pozwalają zobaczyć prośbę o uzgadnianie, która pozostaje w toku podczas otwierania połączenia, ale nie można zobaczyć ruchu z tego, co wiem. Możesz jednak na przykład: sniff it.

63

Chrome Canary i Chromium mają teraz funkcję kontroli ramki wiadomości WebSocket. Oto kroki, aby przetestować go szybko:

  1. Przejdź do WebSocket Echo demo, hostowane na stronie websocket.org.
  2. Włącz narzędzia dla programistów w przeglądarce Chrome.
  3. Kliknij Sieć, a aby filtrować ruch pokazywany przez narzędzia Dev, kliknij WebSockets.
  4. W wersji demonstracyjnej echa kliknij Połącz. Na karcie Nagłówki w Google Dev Tool możesz sprawdzić uścisk WebSocket.
  5. Kliknij przycisk Wyślij w wersji demonstracyjnej Echo.
  6. KROK WAŻNY: Aby wyświetlić ramki WebSocket w Narzędziach programisty Chrome, w obszarze Nazwa/ścieżka kliknij wpis echo.websocket.org, reprezentujący połączenie WebSocket. Spowoduje to odświeżenie głównego panelu po prawej stronie i sprawi, że karta WebSocket Frames wyświetli się z rzeczywistą treścią wiadomości WebSocket.

Uwaga: Za każdym razem wysyłać lub odbierać nowe wiadomości, trzeba odświeżyć główny panel klikając na wejściu echo.websocket.org po lewej stronie.

Wysłałem również steps with screen shots and video.

Moja ostatnio opublikowana książka, The Definitive Guide to HTML5 WebSocket, zawiera również dodatek poświęcony różnym narzędziom do inspekcji, w tym narzędziom Chrome Dev, wbudowanym netom Chrome i Wire Shark.

+3

Należy zachować ostrożność, publikując kopie i wklejając obowiązkowe odpowiedzi na wiele pytań, które zazwyczaj są oznaczone jako "spam" przez społeczność. Jeśli to robisz, oznacza to zazwyczaj, że pytania są duplikowane, więc oznacz je jako takie. – Kev

+2

Dziękujemy za krok 6! Wiedziałem o filtrze WebSockets na karcie Sieć, ale byłem sfrustrowany, że wydawało mi się, że tylko łapie moje pierwsze wiadomości. Czy wiesz, czy istnieje sposób, aby poinformować o połączeniu z internetem, które było otwarte przed otwarciem karty? –

+0

Bryan - Nie wierzę, że możesz dzisiaj. –

1

Krótka odpowiedź na Chrome w wersji 29 i up:

  1. Otwarte debugger, przejdź na zakładkę "Sieć" stronie
  2. Załaduj websocket
  3. Kliknij na życzenie websocket z aktualizacji odpowiedź od serwera
  4. Wybierz zakładkę "frames", aby zobaczyć ramek websocket
  5. Kliknij na życzenie websocket ponownie do odświeżania klatek
+1

Wygląda na to, że działa to, ale denerwujące jest to, że przestaje działać, jeśli odłączysz się i ponownie połączysz z URL-em websocket (np. Na http://www.websocket.org/echo.html), w takim przypadku musisz odświeżyć stronę! :( – matanster

8

Masz 3 opcje: Chrome (przez Narzędzia programistyczne -> zakładka Sieć), Wireshark i Skrzypek (przez zakładkę Log), jednak wszystkie są bardzo proste. Jeśli masz bardzo duży ruch lub każda klatka jest bardzo duża, bardzo trudno jest użyć ich do debugowania.

Można jednak użyć Fiddlera z FiddlerScript do sprawdzenia ruchu WebSocket w taki sam sposób, w jaki kierujemy się ruchem HTTP. Zaletą tego rozwiązania jest to, że możesz wykorzystać wiele innych funkcji w Fiddler, takich jak wielu inspektorów (HexView, JSON, SyntaxView), porównywać pakiety i znajdować pakiety itp. Inspect WebSocket traffic

Proszę odnieść się do mojego ostatnio napisanego artykułu na temat CodeProject, który pokazuje, jak debugować/sprawdzać ruch WebSocket za pomocą Fiddlera (z FiddlerScript). http://www.codeproject.com/Articles/718660/Debug-Inspect-WebSocket-traffic-with-Fiddler

23

Jeśli nie masz stronę, która ma dostęp do websocket, można otworzyć konsolę Chrome i wpisz JavaScript w:

var webSocket = new WebSocket('ws://address:port'); 
webSocket.onmessage = function(data) { console.log(data); } 

To otworzy websocket więc widać w karcie sieci i konsoli.

28

Pozostałe odpowiedzi dotyczą najczęściej spotykanego scenariusza: obejrzyj zawartość klatek (Narzędzia dla programistów -> karta Sieć -> Kliknij prawym przyciskiem myszy połączenie internetowe -> klatki).

Jeśli chcesz dowiedzieć się trochę więcej informacji, takich jak gniazda, które są obecnie otwarte/bezczynny lub być w stanie zamknąć je znajdziesz ten link przydatnych

chrome://net-internals/#sockets 
36

Wydają się ciągle zmieniać rzeczy w Chrome ale oto, co działa teraz :-)

  • Najpierw musisz kliknąć czerwony przycisk nagrywania, bo inaczej nic nie dostaniesz.

  • Nigdy wcześniej nie zauważyłem, że WS odfiltrowuje połączenia z gniazdem sieciowym .

  • Wybierz, a następnie możesz zobaczyć ramki, które pokażą ci komunikaty o błędach itp.

enter image description here

+0

Nie podoba mi się sposób, w jaki JSON jest tam sformatowany, brzydki, bez formatowania, – ses

+0

@ses that's signalR protocol. –

3

Użyłem rozszerzenie Chrome o nazwie Simple WebSocket Client v0.1.3 który jest wydawany przez hakobera użytkownika. Jest bardzo prosty w użyciu, umożliwiając otwieranie stron internetowych pod danym adresem URL, wysyłanie wiadomości i zamykanie połączenia z gniazdem. Jest bardzo minimalistyczny.