当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Node.js net.createServer([options][, connectionListener])用法及代码示例


net.createServer([options][, connectionListener])

添加于:v0.5.0
  • options <Object>

    • allowHalfOpen <boolean> 如果设置为 false ,那么当可读端结束时,套接字将自动结束可写端。 默认: false
    • pauseOnConnect <boolean> 指示套接字是否应在传入连接时暂停。 默认: false
    • noDelay <boolean> 如果设置为 true ,它会在收到新的传入连接后立即禁用 Nagle 算法。 默认: false
    • keepAlive <boolean> 如果设置为 true ,它会在收到新的传入连接后立即在套接字上启用 keep-alive 函数,与 socket.setKeepAlive([enable][, initialDelay]) 中所做的类似。 默认: false
    • keepAliveInitialDelay <number> 如果设置为正数,它会设置在空闲套接字上发送第一个保活探测之前的初始延迟。 默认: 0
  • connectionListener <Function> 自动设置为 'connection' 事件的侦听器。

  • 返回: <net.Server>

创建一个新的 TCP 或 IPC 服务器。

如果 allowHalfOpen 设置为 true ,当套接字的另一端发出传输结束信号时,服务器只会在显式调用 socket.end() 时发回传输结束。例如,在 TCP 上下文中,当接收到 FIN 打包时,只有在显式调用 socket.end() 时才会发回打包的 FIN。在那之前,连接是half-closed(不可读但仍可写)。有关详细信息,请参阅 'end' 事件和RFC 1122(第 4.2.2.13 节)。

如果 pauseOnConnect 设置为 true ,则与每个传入连接关联的套接字将暂停,并且不会从其句柄中读取任何数据。这允许在进程之间传递连接,而原始进程不会读取任何数据。要开始从暂停的套接字读取数据,请调用 socket.resume()

服务器可以是 TCP 服务器或 IPC 服务器,具体取决于它的 listen() 目标。

下面是一个 TCP 回显服务器的示例,它侦听端口 8124 上的连接:

const net = require('node:net');
const server = net.createServer((c) => {
  // 'connection' listener.
  console.log('client connected');
  c.on('end', () => {
    console.log('client disconnected');
  });
  c.write('hello\r\n');
  c.pipe(c);
});
server.on('error', (err) => {
  throw err;
});
server.listen(8124, () => {
  console.log('server bound');
});

使用 telnet 对此进行测试:

$ telnet localhost 8124

监听套接字 /tmp/echo.sock

server.listen('/tmp/echo.sock', () => {
  console.log('server bound');
});

使用 nc 连接到 Unix 域套接字服务器:

$ nc -U /tmp/echo.sock

相关用法


注:本文由纯净天空筛选整理自nodejs.org大神的英文原创作品 net.createServer([options][, connectionListener])。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。