2012-11-25 17 views
12

Có cách nào để đóng phản hồi không? Tôi có thể sử dụng res.end() nhưng nó không thực sự đóng socket.Phản hồi gần Express.js

Điều tôi muốn đạt được: Tôi đang viết một chương trình Java có giao diện với mạng và tôi đang viết một máy chủ node.js cho việc này. Mã Java:

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

Nhưng điều này chỉ tiếp tục treo .. Không có kết nối cuối, vẫn đang chờ đầu vào từ ổ cắm.

Node:

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

tuy nhiên res.end() không đóng kết nối .. Như đã nói trước đây, java giữ suy nghĩ sẽ có một cái gì đó tiếp theo vì vậy nó được bị mắc kẹt trong vòng lặp while.

Cảm ơn bạn

+0

Tôi đang sử dụng node.js và express.js mới nhất –

Trả lời

24

Được giải quyết bằng cách đặt tiêu đề HTTP để đóng kết nối thay vì chiến lược tiếp tục mặc định.

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

là có cách nào để tôi có thể gắn dấu trang đó làm mặc định cho tất cả các câu trả lời không? –

+3

@AbhishekDeb nếu bạn tạo một phần mềm trung gian đặt tiêu đề ở trên thì nó sẽ hoạt động đối với tất cả các yêu cầu –

+0

Chắc chắn điều này chỉ yêu cầu phía bên phải đóng kết nối. Bạn không đóng kết nối nếu bạn đang gửi tiêu đề trở lại trong phản hồi. – Phil