β

Node.js 常见网络错误信息

Taobao FED | 淘宝前端团队 135 阅读

Node.js 常见网络错误信息

1.介绍

熟悉 Node.js 的同学一定见过 ETIMEDOUT EADDRINUSE 等错误提示,那么这些错误信息到底是什么呢?答案其实很简单,因为 Node.js 底层使用的是 glibc 库 ,这些错误信息都是 glibc 库在 socket 连接时使用的 connect 函数中定义的错误类型,当然,v8在使用glibc库时也会加入一些自定义的错误类型,但许多错误情况还是和glibc中的定义一致的。

connect 函数的定义为: int connect (int socket, struct sockaddr addr, socklen_t length)

connect 函数会使用文件描述符(file descriptor) socket 表示的 socket 发起连接,socket 地址通过 addr length 这两个参数来指定。(这个 socket 一般是其他机器的 socket,而且必须已经配置成了服务器)。

一般情况下, connect 函数会等待服务器响应请求才返回。当然也可以将 socket 设置为非阻塞模式来不等待响应就快速返回(可以参考下 nginx 是怎么使用 socket 的)。

2.错误类型

connect 函数正常的返回值为 0,在有错误时会返回 -1。函数中定义了如下错误条件:

3.注意

connect 是作为多线程程序的取消点定义的,开发者需要确保线程取消后释放了占用的资源(例如内存、文件描述符、 semaphore )等)。

参考资料

Node.js 常见网络错误信息

1.介绍

熟悉 No

作者:Taobao FED | 淘宝前端团队
淘宝前端团队(FED)
原文地址:Node.js 常见网络错误信息, 感谢原作者分享。

发表评论