3

我正在使用 Eclipse 的 Google Chrome Developer Tools 插件来调试我的 Node.js 服务器。该服务器使用 Socket.io 作为我的 Web 客户端和服务器之间的 websocket 连接。当我在服务器中设置断点并开始单步执行代码时,问题就出现了。客户端很快就决定服务器不再存在,因为不再有心跳或任何通信,所以它断开连接。同时,当我逐步完成时,我的代码尝试对套接字做一些事情,然后它死了,因为套接字现在已关闭。尝试像这样进行调试有点棘手。

所以问题是,如何使用打开的 websocket 连接调试这样的服务器而不关闭连接?我不知道有什么好的解决方案,但我想我会把它放在那里,看看是否有人有天才的想法。

4

4 回答 4

6

在做了更多研究之后,我发现了几个看起来很有希望的不同项目,即“node-inspector”和“node-codein”。但是,node-inspector 不适用于最新版本的 node,并且 node-codein 有很多错误。此外,两者都没有真正维护,它们都只适用于 Chrome。因此,我编写了自己的解决方案,称为Node Monkey,它使用起来非常简单,并且适用于 Firefox 或 Chrome。它只是捕获记录到 Node 应用程序中控制台的内容,并将该输出重定向到浏览器控制台。您可以通过运行安装它:

npm install node-monkey
于 2012-10-17T17:27:18.843 回答
6

即使听起来有点讨厌和陈旧,但在这种情况下(实际上是调试客户端->服务器环境)我经常在服务器端使用标准输出,就像console.log()and console.debug.

如果您需要调试客户端脚本,如果您不想丢失服务器连接,也可以这样做。除了重新配置socket.IO的心跳超时基本上更高之外,我实际上没有看到任何其他解决方法。

于 2012-10-11T20:03:10.807 回答
2

我知道这是很久以后的事了,但我发现另一个非常适合快速 socket.io 完整性检查的选项是socket-io-tester

我在这里提到它,因为这个答案是谷歌上的第一个结果,我花了更多的时间去寻找这个工具。

于 2018-02-11T22:37:40.993 回答
0

为此,您可以遵循 socket.io 的官方文档

https://socket.io/docs/v3/logging-and-debugging/index.html

就我而言,我在 package.json 中做了这个

"scripts": {
 "test": "echo \"Error: no test specified\" && exit 1",
 "start": "DEBUG=engine,socket.io* nodemon src/server.js"},

我希望它对您有所帮助,如果您有任何疑问,请随时问我

于 2021-03-25T05:03:51.540 回答