2012-11-25 19 views
12

C'è un modo per chiudere una risposta? Posso usare res.end() ma in realtà non chiude il socket.Express.js chiudi risposta

Cosa voglio ottenere: sto scrivendo un programma Java che si interfaccia con la rete e sto scrivendo un server node.js per questo. codice Java:

String line; 
while((line = in.readLine()) != null) { 
    System.out.println("RES: "+line); 
} 

Ma questo solo continua appeso .. Nessuna connessione end, ancora in attesa per l'ingresso dalla presa.

Node:

exports.getAll = function (req, res) { 
    res.set("Content-Type", "text/plain"); 
    res.set(200); 
    res.send(..data..); 
    res.end(); 
} 

tuttavia res.end() non chiude la connessione .. Come detto prima, Java continua a pensare ci sarà qualcosa di prossimo quindi è bloccato nel ciclo while.

Grazie

+0

Sto usando l'ultimo node.js e express.js –

risposta

24

risolto impostando un'intestazione HTTP per chiudere la connessione al posto di predefinito strategia di keep-alive.

res.set("Connection", "close"); 
+0

c'è un modo per collegarlo come predefinito a tutte le risposte? –

+3

@AbhishekDeb se si crea un middleware che imposta l'intestazione sopra allora funzionerà per tutte le richieste –

+0

Sicuramente questo dice al lato remoto di chiudere la connessione. Non stai chiudendo la connessione se stai inviando le intestazioni nella risposta. Il nodo – Phil