2012-03-31 18 views
19

Tôi đang tìm cách cơ bản có thể thay đổi các cổng mà ứng dụng tốc hành của tôi đang chạy.Dừng lập trình và khởi động lại máy chủ tốc hành (để thay đổi cổng)

Tôi đã thử:

server.on('close', function() { 
    server.listen(3000); 
}); 

server.listen(8080); 
server.close(); 

này trả về một lỗi Node.js khó hiểu. Tôi đang chạy nút v0.4.11, tôi đang nâng cấp ngay bây giờ để xem có khắc phục được không.

EDIT Dưới đây là các lỗi:

Assertion failed: (!io->watcher_.active), function Set, file ../src/node_io_watcher.cc, line 160. 

Cảm ơn, Matt

+0

'.listen' không đồng bộ, do đó sẽ cố gắng đóng trước khi mở. Hãy thử 'server.listen (8080, function() {server.close();});', có thể điều đó sẽ hoạt động. – loganfsmyth

+1

Bạn đang gặp phải lỗi gì? – Brad

+0

Xác nhận không thành công: (! Io-> watcher_.active), hàm Set, file ../src/node_io_watcher.cc, dòng 160. – Matt

Trả lời

26

Vấn đề là .listen là không đồng bộ. Bằng cách gọi .close ngay sau khi gọi .listen, bạn sẽ đóng nó trước khi nó được mở.

Hãy thử thay vào đó.

server.listen(8080, function() { 
    server.close(); 
}); 
+2

#đóng cũng không đồng bộ. Nó có một cuộc gọi lại, mà chỉ kích hoạt khi máy chủ đã kết thúc giao dịch với bất kỳ kết nối còn sót lại nào – rocketspacer