javascript - net - Cómo desconectarse del zócalo tcp en NodeJs
node js (3)
Me conecto al servidor de socket en NodeJs usando este comando:
client = net.createConnection()
¿Cómo puedo entonces desconectar correctamente del servidor?
client.end()
e incluso client.destroy()
pero cuando verifico el estado de la conexión usando netstat, muestra que la conexión está en el estado FIN_WAIT2.
¿Cómo puedo cerrar y destruir la conexión por completo?
Esta es la secuencia de terminación de la conexión TCP predeterminada,
Al llamar a client.end()
el nodo js enviará el paquete FIN al servidor, y el servidor responderá con un paquete FIN al cliente para que acepte la terminación del socket.
A partir de la documentación de nodejs, lo que hace socket.end
es,
Medio cierra el zócalo. Es decir, envía un paquete FIN. Es posible que el servidor todavía envíe algunos datos.
Cuando se recibe el paquete FIN, la conexión al servidor desde el cliente se cierra automáticamente y se socket.on(''close'', .. )
el socket.on(''close'', .. )
y se devuelve el ACK.
Por lo tanto, la conexión se termina al aceptar el servidor y el cliente para que el servidor pueda enviar los datos que puedan necesitar antes de cerrar la conexión.
Pero al llamar a socket.destory
, la conexión del cliente se destruirá sin recibir el paquete FIN a la fuerza y es una buena práctica evitarlo si es posible.
Referencia:
Lo que desea es client.close (), el cliente se mantiene vivo para futuras conexiones. Si no desea volver a utilizar la conexión en un futuro próximo, puede destruirla. Debo decir en mi humilde opinión que la semántica no es tan consistente en net.Socket. Conectas () un Socket y lo opuesto es close (). abrir () un Socket sería más apropiado. client-end () envía un paquete de fin al servidor
net.createConnection()
devuelve un objeto Socket. client.destroy()
es lo que quieres hacer.
Fuente: http://nodejs.org/docs/latest/api/net.html#socket.destroy