Google Chrome'da WebSocket'te hata ayıklama


213

Bir WebSocket üzerinden geçen "trafiği" izlememe izin veren bir yol veya uzantı var mı? Hata ayıklama amacıyla, istemci ve sunucu isteklerini / yanıtlarını görmek istiyorum.

Yanıtlar:


250

Chrome geliştirici araçları artık WebSocket çerçevelerini listeleyebiliyor ve çerçeveler ikili değilse verileri inceleyebiliyor.

Süreci:

  1. Chrome Geliştirici araçlarını başlatın
  2. Sayfanızı yükleyin ve WebSocket bağlantılarını başlatın
  3. Ağ Sekmesine tıklayın .
  4. Soldaki listeden WebSocket bağlantısını seçin ("101 Anahtarlama Protokolü" durumuna sahip olacaktır.
  5. Click Mesajlar alt sekmesini. İkili kareler bir uzunluk ve zaman damgası ile görünecek ve maskelenip maskelenmediklerini gösterecektir. Metin çerçeveleri ayrıca yük içeriği içerir.

WebSocket bağlantınız ikili çerçeveler kullanıyorsa, muhtemelen bağlantıda hata ayıklamak için Wireshark kullanmak isteyeceksiniz. Wireshark 1.8.0 WebSockets için ayırıcı ve filtreleme desteği ekledi. Bu diğer cevapta bir alternatif bulunabilir .


1
Bunu yapmak için Wireshark'ı nasıl kullanacağınızı biliyor musunuz? Hiç kullanmadım ve tüm ağ trafiğini gösteriyor ve ham paketleri gösteriyor.
14'te mellowsoon

2
Yakalama filtrelerini kullanarak yakalamayı tek bir bağlantı noktasıyla sınırlandırabilirsiniz . Alternatif olarak, bir yakalama yaptıktan sonra, oturumun bir parçası olan yakalanan bir kareye sağ tıklayabilir ve yalnızca o oturumu gösterme seçeneğini seçebilirsiniz.
kanaka

1
Ne yazık ki WireShark'ı windows üzerinde localhost kullanarak kullanmak, çalışmak için çemberlerden atlamayı gerektirir. Bkz wiki.wireshark.org/CaptureSetup/Loopback
Greg Woods

2
Kısa süre önce CodeProject hakkında, Fiddler ile WebSocket trafiğinde hata ayıklamayı / incelemeyi gösteren bir makale yazdım. codeproject.com/Articles/718660/…
motor gücü

1
@NiCkNewman evet, yükün bayt uzunluğunu gösteren 7 bitlik bir alandır. Ancak, alanın değeri 126 veya 127 ise, sırasıyla sonraki 16 veya 64 bit, yükün bayt cinsinden uzunluğudur. Spesifikasyondaki uzunluk alanının açıklamasına bakın: tools.ietf.org/html/rfc6455#section-5.2 (grok yapmak oldukça kolaydır). Biraz tuhaf, ama kısa mesajları çok verimli hale getiriyor (sadece 2 baytlık bir başlık).
kanaka

72

Chrome Canary ve Chromium artık WebSocket mesaj çerçevesi inceleme özelliğine sahip. Hızlı bir şekilde test etmek için adımlar şunlardır:

  1. Websocket.org sitesinde barındırılan WebSocket Echo demosuna gidin .
  2. Chrome Geliştirici Araçları'nı açın.
  3. Ağ'ı tıklayın ve Geliştirme Araçları tarafından gösterilen trafiği filtrelemek için WebSockets'i tıklayın .
  4. Yankı demosunda Bağlan'ı tıklayın . Google Geliştirici Aracı'ndaki Üstbilgiler sekmesinde WebSocket el sıkışmasını inceleyebilirsiniz.
  5. Yankı demosundaki Gönder düğmesini tıklayın.
  6. BU ADIM ÖNEMLİDİR : Chrome Geliştirici Araçları'ndaki WebSocket çerçevelerini görmek için Ad / Yol altında WebSocket bağlantınızı temsil eden echo.websocket.org girişini tıklayın. Bu, sağdaki ana paneli yeniler ve WebSocket Çerçeveleri sekmesinin gerçek WebSocket mesaj içeriğiyle görünmesini sağlar.

Not : Her yeni mesaj gönderip aldığınızda, soldaki echo.websocket.org girişini tıklayarak ana paneli yenilemeniz gerekir.

Adımları ekran görüntüleri ve video ile de paylaştım .

Yakın zamanda yayınlanan kitabım olan HTML5 WebSocket için Kesin Kılavuz'da ayrıca Chrome Geliştirme Araçları, Chrome ağ iç ve Tel Köpekbalığı gibi çeşitli inceleme araçlarını kapsayan özel bir ek bulunmaktadır.


3
Birden fazla soruya kopyala ve yapıştır levhası / kelimesi kelimesine yanıtlar gönderirken dikkatli olun, bunlar topluluk tarafından "spam" olarak işaretlenir. Bunu yapıyorsanız, bu genellikle soruların kopya olduğu anlamına gelir, bu yüzden onları böyle işaretleyin.
Kev

2
6. adım için teşekkürler! Ağ sekmesindeki WebSockets filtresini biliyordum, ancak yalnızca ilk birkaç iletimi yakalamış gibi görünüyordu. Sekmeyi açmadan önce açık olan bir websocket bağlantısından haberdar olmanın bir yolu olup olmadığını biliyor musunuz?
Bryan Head

Bryan - Bugün yapabileceğine inanmıyorum.
Peter Moskovits

@PeterMoskovits Perchance, ikili karelerin içeriğini Chrome'da incelemenin bir yolunu biliyor musunuz? Şu anda sadece uzunluğunu görebiliyorum!
Howie

@Howie Chrome ile yapamazsınız. Bunun için WireShark'ı kullanabilirsiniz. Yeni kitabımız HTML5 WebSocket için Kesin Kılavuz, WireShark'a da hızlı bir giriş sağlar. amazon.com/Definitive-Guide-HTML5-WebSocket-Apress/dp/…
Peter Moskovits

52

Chrome'daki içerikleri sürekli değiştiriyor gibi görünüyorlar, ancak şu anda işe yarayan :-)

  • İlk önce kırmızı kayıt düğmesine tıklamanız gerekir, aksi takdirde hiçbir şey elde edemezsiniz.

  • Daha WSönce hiç fark etmedim ama web soketi bağlantılarını filtreliyor.

  • Onu seçin ve size hata mesajlarını vb. Gösterecek çerçeveleri görebilirsiniz.

resim açıklamasını buraya girin


Ben JSON orada çirkin biçimlendirilmiş nasıl sevmiyorum. Temelde biçimlendirme yok.
ses

1
@se bu signalR protokolüdür. 😜 Microsoft ile o kadar götür
Simon_Weaver

1
en azından bu sorunun dört yıl sonra hala iyi olduğunu görmekten memnunum: p
Stu Thompson

1
Evet @StuThompson - benim upvotes :-) biriken tutmak
Simon_Weaver

41

Web soketine erişen bir sayfanız yoksa, Chrome konsolunu açabilir ve JavaScript'inizi aşağıdakilere yazabilirsiniz:

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

Bu, ağ soketini açacaktır, böylece ağ sekmesinde ve konsolda görebilirsiniz.


Teşekkürler! Ayrıca: Açtığınız sayfanın web soketinizle aynı kaynaktan olması gerekir. Chrome geliştirici araçlarını farklı bir kaynaktan (hatta yeni sekme sayfasında) açmaya ve ardından web soketine bağlamaya çalışırsanız bir yetkilendirme hatası alırsınız.
Dan Esparza

Bunu düzeltmenin bir yolu var mı?
not2qubit

37

Diğer yanıtlar en yaygın senaryoyu kapsar: çerçevelerin içeriğini izleyin (Geliştirici Araçları -> Ağ sekmesi -> Web soketi bağlantısına sağ tıklayın -> çerçeveler).

Hangi soketlerin şu anda açık / boşta olduğunu veya bunları kapatabileceğiniz gibi daha fazla bilgi edinmek istiyorsanız, bu URL'yi yararlı bulacaksınız

chrome://net-internals/#sockets

10

3 seçeneğiniz vardır: Chrome (Geliştirici Araçları -> Ağ sekmesi aracılığıyla), Wireshark ve Fiddler (Günlük sekmesi aracılığıyla), ancak hepsi çok basit. Çok yüksek trafik hacminiz varsa veya her kare çok büyükse, hata ayıklama için kullanmak çok zorlaşır.

Ancak WebSocket trafiğini HTTP trafiğini incelediğiniz şekilde incelemek için Fiddler'ı FiddlerScript ile birlikte kullanabilirsiniz. Bu çözümün birkaç avantajı, Fiddler'de birden fazla denetçi (HexView, JSON, SyntaxView) gibi diğer birçok işlevsellikten yararlanabilmeniz, paketleri karşılaştırabilmeniz ve paketleri bulabilmenizdir.WebSocket trafiğini inceleme

Lütfen Fiddler (FiddlerScript ile) ile WebSocket trafiğinde nasıl Hata Ayıklama / İnceleme yapacağınızı gösteren CodeProject ile ilgili yeni yazılmış makaleme bakın. http://www.codeproject.com/Articles/718660/Debug-Inspect-WebSocket-traffic-with-Fiddler


5

Chrome çok değiştiğinden bunu gönderiyorum ve yanıtların hiçbiri güncel değil.

  1. Geliştirici araçlarını aç
  2. SAYFANIZI YENİLEME (WS bağlantısının ağ sekmesi tarafından yakalanması için)
  3. İsteğinizi tıklayın
  4. "Çerçeveler" alt sekmesini tıklayın
  5. Bunun gibi bir şey görmelisin:

resim açıklamasını buraya girin


4

Chrome 29 ve sonraki sürümleri için kısa yanıt:

  1. Hata ayıklayıcıyı açın, "Ağ" sekmesine gidin
  2. Sayfayı websocket ile yükle
  3. Sunucudan yükseltme yanıtı ile websocket isteğine tıklayın
  4. Web soketi çerçevelerini görmek için "Çerçeveler" sekmesini seçin
  5. Çerçeveleri yenilemek için websocket isteğine tekrar tıklayın

1
Websocket url'sinin bağlantısını kesip yeniden bağlarsanız (örneğin websocket.org/echo.html'de ) çalışmayı durdurması rahatsız edici olması dışında, bu işe yarıyor gibi görünüyor , bu durumda sayfayı yenilemeniz gerekir! :(
matanster

3

Chrome geliştirici araçları, açılan bağlantı sırasında beklemede olan el sıkışma isteğini görmenizi sağlar, ancak trafiği bildiğim kadarıyla göremezsiniz. Ancak , örneğin koklayabilirsin .


2

Kullanıcı hakobera tarafından yayınlanan Simple WebSocket Client v0.1.3 adlı Chrome uzantısını kullandım . Belirli bir URL'de web soketlerini açmaya, mesaj göndermeye ve soket bağlantısını kapatmaya izin verdiği kullanımda çok basittir. Çok minimalist.


2

Kullanmaya başladığım bir araca gelince, Firecamp'ı Postman gibi öneriyorum , ancak websockets ve socket.io'yu da destekliyor.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.