如何使用 Socket.io 调试 Node.js



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

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

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

npm install node-monkey

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

如果需要调试客户端脚本,如果不想丢失服务器连接,也可以执行相同的操作。实际上,在您重新配置套接字之外,我看不到任何其他解决方法。IO 的检测信号超时明显更高。

我知道

这是很久以后的事了,但我发现另一个最终非常适合快速 socket.io 健全性检查的选项是socket-io-tester。

在这里提到它,因为这个答案是谷歌上的第一个结果,我花了更多的挖掘才能找到该工具。

为此,您可以按照官方文档 socket.io

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

就我而言,我在我的包中这样做了.json

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

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

最新更新