无法使用 WebSocket 连接到 node.js 检查器

Can not connect to node.js inspector using WebSocket

我正在尝试在 JavaScript 中开发一个 node.js 调试器。我正在使用 node --inspect-brk 执行 JS 脚本,如下所示 -

c:\node\node --inspect-brk test.js

然后打印 WebSocket URL-

Debugger listening on ws://127.0.0.1:9229/bb6eed9d-19d4-47ae-99cf-2f2a09e125ef
For help see https://nodejs.org/en/docs/inspector

现在我正在使用WebSocket连接-

var ws = new WebSocket("ws://127.0.0.1:9229/bb6eed9d-19d4-47ae-99cf-2f2a09e125ef");
ws.onmessage = function(data){console.log(data);}
ws.onerror = function(data){console.log(data);}

但是,当我发送 continue 命令时,我没有收到来自 V8-

的响应
ws.send(JSON.stringify({"seq":117,"type":"request","command":"continue"}));

我在这里找到了 V8 协议的命令 - https://github.com/buggerjs/bugger-v8-client/blob/master/PROTOCOL.md

实际上ws.readyState为1,表示连接已正确建立。没有错误或消息记录。即使在 chrome 网络选项卡中,我也可以看到发送的数据,但没有从 V8 收到数据,请参见屏幕截图。

测试JS代码-

var x=1;
x++;
console.log(x);

尝试发送此消息:{"id": 7, "method": "Runtime.runIfWaitingForDebugger"}

我认为问题可能出在参数“-brk”阻塞了 nodejs 进程。所以当你发送消息时,它无法得到响应。但是当时打开chrome调试的时候,发现效果很好。所以,打开 chrome devtool 并检查 ws 网络信息。我发现 ws 在构建时会发送一些消息。也许当您发送消息时:"Runtime.runIfWaitingForDebugger",nodejs 进程将继续 运行。

shell.js

ws network