node.js可以在UNIX套接字上侦听吗?

Luc*_*Luc 48 node.js

可以node.js在UNIX socket上监听吗?我没有找到任何关于此的文件.我只看到了在专用端口上侦听的可能性.

jos*_*rry 72

要监听node.js中的传入连接,您需要使用net.server类.

创建此类实例的标准方法是使用该net.createServer(...)函数.一旦有了这个类的实例,就可以使用该server.listen(...)函数告诉服务器实际监听的位置.

如果listen的第一个参数是一个数字,那么nodejs将侦听具有该端口号的TCP/IP套接字.但是,如果listen的第一个参数是一个字符串,那么服务器对象将在该路径上的Unix套接字上侦听.

var net = require('net');

// This server listens on a Unix socket at /var/run/mysocket
var unixServer = net.createServer(function(client) {
    // Do something with the client connection
});
unixServer.listen('/var/run/mysocket');

// This server listens on TCP/IP port 1234
var tcpServer = net.createServer(function(client) {
    // Do something with the client connection
});
tcpServer.listen(1234);
Run Code Online (Sandbox Code Playgroud)

  • 对于那些想知道的人,你也可以用[express 4.x](https://expressjs.com)做到这一点!因为`app.listen`是[基本上是一个辅助函数](https://expressjs.com/en/4x/api.html#app.listen),做`app.listen("/ var/run/mysocket") `同样有效. (12认同)
  • @ggedde 我也有这个问题。将“fs.unlinkSync(socketPath);”放在“listen()”调用之前对我有用。 (2认同)