2012-11-25 15 views
12

Czy istnieje sposób na zakończenie odpowiedzi? Mogę użyć res.end(), ale to faktycznie nie zamyka gniazda.Close.js zamknij odpowiedź

Co chcę osiągnąć: Piszę program w języku Java, który łączy się z siecią, i piszę do tego serwer node.js. Kod Java:

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

Ale to po prostu wisi .. Brak połączenia końcowego, wciąż czeka na wejście z gniazda.

Węzeł:

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

jednak res.end() nie zamknąć połączenie .. Jak wspomniano wcześniej, Java trzyma myślenia będzie coś obok więc tkwi w pętli while.

Dziękuję

+0

Używam najnowszego pliku node.js i express.js –

Odpowiedz

24

rozwiązany przez ustawienie nagłówka HTTP, aby zamknąć połączenie zamiast domyślnej strategii keep-alive.

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

czy jest jakiś sposób, aby go podłączyć jako domyślny dla wszystkich odpowiedzi? –

+3

@AbhishekDeb, jeśli utworzysz oprogramowanie pośredniczące, które ustawia powyższy nagłówek, będzie działało dla wszystkich żądań. –

+0

To po prostu mówi stronie zdalnej, aby zamknąć połączenie. Nie zamykasz połączenia, jeśli wysyłasz nagłówki z powrotem w odpowiedzi. – Phil