2012-02-08 50 views
18

conecto a la toma de servidor en nodejs utilizando este comando:Cómo desconectarse de socket TCP en nodejs

client = net.createConnection() 

Como puedo luego desconectar correctamente desde el servidor?

Probé client.end() e incluso client.destroy()

pero cuando puedo comprobar el estado de la conexión usando netstat muestra que la conexión está en estado FIN_WAIT2.

¿Cómo puedo cerrar y destruir la conexión por completo?

+0

¿Has probado 'client.close()'? – fent

+2

No hay un método client.close – mgamer

Respuesta

15

net.createConnection() devuelve un objeto Socket. client.destroy() es lo que quieres hacer.

Fuente: http://nodejs.org/docs/latest/api/net.html#socket.destroy

+4

¿Cuál es la diferencia entre end y destroy? Después de destruir, también veo estado FIN_WAIT2 en netstat. – mgamer

+2

@mgamer '' end() '' solo cierra el flujo de escritura del socket, el host remoto puede mantener abierta su secuencia de escritura y enviarle datos – bara

+1

Al hacerlo, dice "Solo es necesario en caso de errores", parece ser el único método para cierra una conexión. Para mí, uso algo como 'socket.close = function (data) \t \t { \t \t \t var Self = this; \t \t \t si (datos) \t \t \t \t this.write (datos, function() {self.destroy();}); \t \t \t otro \t \t \t \t this.destroy(); \t \t}; ' – Fr0sT

0

Lo que queremos es client.close(), el cliente mantiene viva a continuación para futuras conexiones. Si no quiere usar la conexión más en el futuro cercano, puede destruirla(). Debo decir en mi humilde opinión que la semántica no es tan consistente en la red. Socket. Usted conecta() un zócalo y lo opuesto está cerca(). open() un socket sería más apropiado. client-end() envía un paquete de aletas al servidor

Cuestiones relacionadas