有没有一种方法或扩展可以让我观察通过 WebSocket 的“流量”?出于调试目的,我想查看客户端和服务器请求/响应。
12 回答
Chrome 开发者工具现在可以列出 WebSocket 帧,如果帧不是二进制的,还可以检查数据。
过程:
- 启动 Chrome 开发者工具
- 加载您的页面并启动 WebSocket 连接
- 单击网络选项卡。
- 从左侧列表中选择WebSocket 连接(其状态为“101 Switching Protocols”。
- 单击消息子选项卡。二进制帧将显示长度和时间戳,并指示它们是否被屏蔽。文本框架将显示还包括有效负载内容。
如果您的 WebSocket 连接使用二进制帧,那么您可能仍希望使用 Wireshark 来调试连接。Wireshark 1.8.0添加了对 WebSockets 的解析器和过滤支持。可以在这个其他答案中找到替代方案。
Chrome Canary 和 Chromium 现在具有 WebSocket 消息帧检查功能。以下是快速测试它的步骤:
- 导航到websocket.org站点上托管的WebSocket Echo 演示。
- 打开 Chrome 开发者工具。
- 单击Network,要过滤 Dev Tools 显示的流量,请单击WebSockets。
- 在 Echo 演示中,单击Connect。在 Google Dev Tool 的 Headers 选项卡上,您可以检查 WebSocket 握手。
- 单击 Echo 演示中的发送按钮。
- 这一步很重要:要在 Chrome 开发人员工具中查看 WebSocket 框架,在名称/路径下,单击 echo.websocket.org 条目,代表您的 WebSocket 连接。这会刷新右侧的主面板,并使 WebSocket Frames 选项卡显示实际的 WebSocket 消息内容。
注意:每次发送或接收新消息时,都必须通过单击左侧的 echo.websocket.org 条目来刷新主面板。
我还发布了带有屏幕截图和视频的步骤。
我最近出版的书《HTML5 WebSocket 权威指南》也有一个专门的附录,涵盖了各种检查工具,包括 Chrome 开发工具、Chrome 网络内部和 Wire Shark。
如果您没有访问 websocket 的页面,您可以打开 Chrome 控制台并输入您的 JavaScript:
var webSocket = new WebSocket('ws://address:port');
webSocket.onmessage = function(data) { console.log(data); }
这将打开 Web 套接字,以便您可以在网络选项卡和控制台中看到它。
其他答案涵盖了最常见的场景:观看框架的内容(开发人员工具 -> 网络选项卡 -> 右键单击 websocket 连接 -> 框架)。
如果您想了解更多信息,例如哪些套接字当前处于打开/空闲状态或能够关闭它们,您会发现此 url 很有用
chrome://net-internals/#sockets
您有 3 个选项:Chrome(通过开发人员工具 -> 网络选项卡)、Wireshark 和 Fiddler(通过日志选项卡),但它们都是非常基本的。如果您的流量非常大或每帧非常大,那么使用它们进行调试变得非常困难。
但是,您可以使用 Fiddler 和 FiddlerScript 来检查 WebSocket 流量,就像检查 HTTP 流量一样。该解决方案的几个优点是您可以利用 Fiddler 中的许多其他功能,例如多个检查器(HexView、JSON、SyntaxView)、比较数据包和查找数据包等。
请参阅我最近撰写的关于 CodeProject 的文章,该文章向您展示了如何使用 Fiddler(使用 FiddlerScript)调试/检查 WebSocket 流量。http://www.codeproject.com/Articles/718660/Debug-Inspect-WebSocket-traffic-with-Fiddler
如果你想要更好的体验,我建议使用 Postman 来调试 WebSocket 请求。它已作为新功能发布。 https://stackoverflow.com/a/43754722/15988851
Chrome 开发人员工具允许查看在打开的连接期间保持挂起的握手请求,但据我所知,您看不到流量。但是,例如,您可以嗅探它。
Chrome 版本 29 及更高版本的简短回答:
- 打开调试器,转到“网络”选项卡
- 使用 websocket 加载页面
- 单击带有来自服务器的升级响应的 websocket 请求
- 选择选项卡“框架”以查看 websocket 框架
- 再次点击websocket请求刷新帧
我使用了由用户 hakobera 发布的名为Simple WebSocket Client v0.1.3的 Chrome 扩展程序。它的使用非常简单,它允许在给定的 URL 上打开 websockets,发送消息并关闭套接字连接。它非常简约。
至于我开始使用的一个工具,我建议firecamp和 Postman 一样,但它也支持 websockets 和 socket.io。