Firefox 的新 WebSocket 检查器

Firefox DevTools 团队 和我们的贡献者在整个夏季都在努力工作,使 Firefox 70 充满了改进。我们对新的 WebSocket 检查功能特别兴奋,因为你们在反馈中告诉我们这对于你们的日常工作非常重要。WebSocket 检查器将在 **Firefox 71 中发布**,但现在您可以在 Firefox 开发者版 中使用它。

要立即使用检查器,请下载 Firefox 开发者版,打开 DevTools 的 *网络* 面板以找到 *消息* 选项卡。然后,继续阅读以了解更多关于 WebSockets 和该新面板具有的技巧。

但首先,要感谢 Heng Yeow Tan,他是负责实施的 Google 暑期代码编程 (GSoC) 学生。

关于 WebSockets 的入门知识

我们使用 WebSocket (WS) API 在客户端和服务器之间创建持久连接。由于 API 随时发送和接收数据,因此它主要用于需要实时通信的应用程序。

虽然可以直接使用 WS API,但一些现有的库很有用,可以节省时间。这些库可以帮助解决连接故障、代理、身份验证和授权、可扩展性等问题。Firefox DevTools 中的 WS 检查器目前支持 Socket.IOSockJS,但正在开发更多支持。

想要了解更多关于如何为您的客户端应用程序设置 WebSocket 的信息?请前往 MDN 的指南。同时,让我们深入了解这个新功能。

WebSocket 检查器入门

WebSocket 检查器是 DevTools 中现有 *网络* 面板 UI 的一部分。在这个面板中,您已经可以筛选已打开的 WS 连接的内容,但到目前为止,您无法查看通过 WS 帧传输的实际数据。

以下屏幕截图显示了 WS 筛选器的工作原理。只有 101 请求 (*WebSocket 协议握手*) 可见。响应代码表明服务器正在切换到 WS 连接。

A screenshot of the Network Monitor panel showing the WS inspection feature

单击 101 请求将打开熟悉的侧边栏,显示有关所选 HTTP 请求的详细信息。此外,UI 现在提供了一个全新的 **消息** 面板,可用于检查通过所选 WS 连接发送和接收的 WS 帧。

The WS inspector in the Network Panel, showing messages

实时更新的表格显示了已发送(绿色箭头)和已接收(红色箭头)WS 帧的数据。每个帧都可以在单击时展开,因此您可以检查格式化的数据。

要关注特定消息,可以自由文本筛选帧。

A screenshot showing a test of the 101 response in the Messages panel

*数据* 和 *时间* 列默认可见,但您可以通过右键单击标题来自定义界面以查看更多列。

Screenshot showing Messages filtering options in Firefox Dev Tools panel

在列表中选择一个帧将在 *消息* 面板底部显示一个预览。

Screenshot of Message showing plain text data sent over WebSocket connection

检查器目前支持以下 WS 协议 - 并且我们计划添加更多

    • 纯 JSON
    • Socket.IO
    • SockJS
    • 即将推出
      • SignalR
      • WAMP

基于这些协议的有效载荷将被解析并显示为可展开的树,以便于检查。当然,您仍然可以查看原始数据(作为通过网络发送的数据)。

Screenshot showing Messages sent via JSON and Socket.IO

使用网络面板工具栏中的暂停/恢复按钮停止拦截 WS 流量。这使您能够仅捕获您感兴趣的帧。

Screenshot of network monitor showing the pause/resume button for WS inspection

WebSocket 检查器的下一步发展

我们希望快速发布这个初始功能集,让您使用它。我们还有一些功能正在开发中,将在即将发布的版本中提供

  • 二进制有效载荷查看器
  • 指示已关闭的连接
  • 更多协议,如 SignalR 和 WAMP(并使其可扩展)
  • 导出 WS 帧(作为 HAR 的一部分)
  • 请查看我们的 积压工作,了解即将推出的更多内容

我们非常希望听到您对新 WebSocket 检查器的 反馈,该检查器现在已在 Firefox 开发者版 70 中提供。它将在 Firefox 71 中发布,其中将包含一些您的反馈和错误修复。如果您还没有机会,请安装并打开开发者版,然后按照这篇文章的步骤掌握 WebSocket 调试。

关于 Jan Honza Odvarko

Honza 正在开发 Firefox 开发者工具

更多 Jan Honza Odvarko 的文章……

关于 Harald Kirschner (digitarald)

Harald “digitarald” Kirschner 是 Firefox 开发者体验和工具的产品经理 - 致力于赋予创造者编码、设计和维护一个对所有人开放且可访问的 Web 的能力。在他在 Mozilla 的 8 年时间里,他在性能、Web API、移动、可安装的 Web 应用程序、数据可视化和开发者外联项目等领域积累了技能。

更多 Harald Kirschner (digitarald) 的文章……


11 条评论

  1. Camden Narzt

    您说“我们非常希望听到您对新 WebSocket 检查器的反馈”,因此请添加一个链接,以便将您的反馈发送到某个地方,以便我们能够看到它。

    2019 年 10 月 15 日 下午 09:23

    1. Harald Kirschner (digitarald)

      说得对。我添加了指向我们讨论区的链接。提交错误报告也行,我们也会监控这篇文章的评论。基本上,您可以在任何地方。

      2019 年 10 月 15 日 下午 10:52

  2. yeah

    是否可以扩展检查器以使用我们自己的协议?

    2019 年 10 月 15 日 下午 10:20

    1. Harald Kirschner (digitarald)

      目前还没有记录,但如果它足够通用,您可以在错误报告中描述它,并将其提交到此处:https://bugzilla.mozilla.org/enter_bug.cgi?format=__default__&blocked=885508&product=DevTools&component=Netmonitor

      2019 年 10 月 15 日 下午 10:53

  3. Mahmoud mortada

    我可以将其与 signalr 一起使用吗?我知道它不在列表中,但如果有任何方法可以帮助我。

    2019 年 10 月 15 日 下午 13:39

    1. Jan Honza Odvarko

      SignalR 目前不支持,但您可以提交错误报告,也许有人可以帮助您实现它。 https://bugzilla.mozilla.org/enter_bug.cgi?format=__default__&blocked=885508&product=DevTools&component=Netmonitor

      2019 年 10 月 16 日 上午 02:23

    2. Harald Kirschner (digitarald)

      跟踪记录在此处:https://bugzilla.mozilla.org/show_bug.cgi?id=1589068

      2019 年 10 月 16 日 下午 12:25

  4. G

    所以您期望我们忽略您完全从 Chrome 复制了这个并且没有提及它的事实?干脆将 DevTools 分叉吧。它本来就更好。

    2019 年 10 月 16 日 下午 10:05

    1. Harald Kirschner (digitarald)

      实际上,我希望人们能注意到,因为他们不必学习另一个 UI。我同意我们应该指出影响并给予认可。我下次会做得更好。

      但请允许我进一步解释,因为我对此很在意:正如我们在帖子中提到的,Honza 之前曾在 Firefox 的 WebSocket 检查方面工作,作为扩展。我们可以在自己的顶级面板中重新创建这种更复杂的用户体验。我们的设计原则之一是不无故偏离现有 UI。更多顶级选项卡也不会很好。因此,基于先前技术构建它对我们来说很容易构建,但对用户来说更容易使用。

      2019 年 10 月 16 日 下午 12:46

  5. chris

    哦,拜托,拜托。我很想添加 MQTT over WS 作为可以解码的内容。代码在哪里?

    2019 年 10 月 16 日 下午 14:09

    1. Jan Honza Odvarko

      https://bugzilla.mozilla.org/show_bug.cgi?id=1566756
      感谢您的贡献!

      2019 年 10 月 17 日 上午 06:15

本文的评论已关闭。