Chrome - 禁用 Web 套接字或关闭 Web 套接字连接?

问题描述 投票:0回答:6

有没有办法通过 Chrome 的开发者工具网络选项卡禁用 Web 套接字连接或结束 Web 套接字连接?

我注意到,将网络选项卡下的限制设置为 Offline 不会影响已建立的 Web 套接字连接。它只是阻止传统的 HTTP 请求出去。

有一个问题here与此相关,但它已经过时了。

google-chrome google-chrome-devtools
6个回答
34
投票

2022 年 2 月更新

从 Chrome 99 开始支持:https://developer.chrome.com/blog/new-in-devtools-99/#websocket

原答案

不,无法从“网络”面板禁用或关闭连接。来源:DevTools 工程师。

但是,如果您有 WS 连接的引用,则可以使用其 JS API 通过控制台关闭它。


13
投票

您可以在 Chrome 的 Net Internals 页面中关闭空闲并刷新不活动的套接字池。然而,不幸的是,从表面上看,这只会关闭您的活动套接字。

chrome://net-internals/#sockets

您必须使用 WebSockets API 并在对现有套接字的引用上调用

close()
来显式关闭它。否则,我能想到的就是用活动套接字杀死进程。


7
投票

试试这个,它是我通过数小时挖掘我遇到的类似问题而产生的。似乎适合我按需关闭“现有”连接。

  1. Chrome 开发工具 -> 内存选项卡 -> 拍摄快照
  2. 完成后,在摘要选项卡上搜索快照“websocket”
  3. 展开结果,可能有几个。通常,您想要的那个是在预览中具有正确的 websocket url 字段的那个(当您将鼠标悬停在条目上时)
  4. 选择它,右键单击并“存储为全局变量”
  5. 在底部打开的控制台中,对存储连接的临时变量执行 .close()。可能会是“temp1.close()”。

此方法类似于另一篇建议从 console.dir() 中提取引用的文章。我不知道为什么 - 但 console.dir() 方法对我不起作用。但这个堆引用却做到了。添加作为替代方案。


1
投票

唯一的方法是切断整个选项卡的连接。


0
投票

我假设您想测试意外的连接失败,这是可能的,但不能通过网络选项卡,并且您需要能够从代码登录。

如果您能够使用

console.dir(socket)
,即使您无法存储连接引用,例如,您也可以关闭 Websocket 连接。由于沙箱。通过
console.dir()
,您可以通过右键单击 websocket 的
console.dir()
输出并选择“将对象存储为全局变量”来获得对套接字的引用。然后在临时引用上调用
close()
,您要终止的连接就会关闭。


0
投票

类似于@Tomi Heiskanen 的答案,但不需要从代码中登录。 在 devtools 控制台中,您可以使用

queryObjects
获取对 WebSocket 的引用 (https://developer.chrome.com/docs/devtools/console/utilities#queryObjects-function)。

查询对象(WebSocket)

这将在控制台上打印所有创建的构造函数为 WebSocket 的对象。

(以下步骤与@Tomi Heiskanen的回答相同)

然后你可以右键单击你想要使用的 websocket(如果你有很多),然后

Store object as global variable
,这会创建一些变量并再次将其打印在控制台上(例如 temp1)。 最后,你可以执行 temp1.close()。

© www.soinside.com 2019 - 2024. All rights reserved.