我想在应用程序期间保留一个端口,但是应用程序不应该一直在该端口上侦听。因此,我想将bind()
通话与listen()
通话分离。
nodejs中的UDP / Datagram套接字具有一个bind
功能。但是我在“普通”(TCP)套接字API中找不到与之等效的文件。
是否可以不听而绑定?
您可以创建未包装的TCP套接字:
const net = require('net');
const TCP = process.binding('tcp_wrap').TCP;
const socket = new TCP();
// Bind is done here.
socket.bind('0.0.0.0', 3333);
console.log('bound');
// Then, at some later stage, if you want to listen,
// you can use the previously created (and bound) socket.
setTimeout(() => {
console.log('listening');
const server = net.createServer((conn) => {
console.log('got connection');
conn.end('bye\n');
}).listen(socket);
}, 5000);
编辑:要实例化Node v9.3.0及更高版本上的套接字,您需要将一个额外的参数传递给构造函数:
const TCPWrap = process.binding('tcp_wrap');
const { TCP } = TCPWrap;
const socket = new TCP(TCPWrap.constants.SERVER); // or .SOCKET
区别在于使用时可以区分两种类型的套接字的能力async_hooks
。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句