我尝试执行此脚本:
require('net').createServer().listen('/tmp/test');
第一次脚本成功运行,但在第二次启动node.js时抛出错误:错误:听EADDRINUSE
有没有办法重用套接字(unix和tcp)?
答案 0 :(得分:1)
显然,第一次调用的脚本/侦听器/服务器仍在运行。您必须终止正在侦听的脚本/进程才能再次使用相同的端口。
答案 1 :(得分:0)
啊?
Node已经在监听'tmp / test'了,它又会怎么听?
就像你不能允许两个应用程序在ONE PORT上监听一样,SOCKET也是如此。一个人应该只允许一个人。
答案 2 :(得分:0)
“正确”的方法(根据Node.js文档)是使用server.close()
关闭服务器,这会从文件系统中删除创建域套接字。
因此,如果再次运行服务器,则不会出现“ EADDRINUSE”错误,因为它每次都会重新创建|删除一个新的域套接字。
在Windows(具有命名管道)上,我们没有这个问题,一旦服务器进程关闭,操作系统会自动删除创建的命名管道