Theo như tôi có thể biết, có 2 giá trị quan trọng ở đây: máy chủ gửi nhịp tim đến máy khách sau mỗi heartbeat interval
giây; máy khách trả lời trực tiếp, nếu không có phản hồi, máy chủ quyết định máy khách đã chết. Khách hàng đợi nhịp tim từ máy chủ trong heartbeat timeout
giây kể từ nhịp tim cuối cùng (rõ ràng là cao hơn heartbeat interval
). Nếu nó đã không nhận được tin từ các máy chủ trong heartbeat timeout
giây, nó giả định máy chủ đã chết (và sẽ bắt đầu ngắt kết nối/kết nối lại dựa trên các tùy chọn khác mà bạn đã thiết lập.
Mặc định giá trị là heartbeat interval = 25s
và heartbeat timeout = 60s
. Cả hai mặt hàng là . bộ trên máy chủ, các heartbeat timeout
được gửi cho khách hàng khi kết nối
Thay đổi heartbeat timeout
cho một khách hàng duy nhất là dễ dàng:
var socket = io.connect(url);
socket.heartbeatTimeout = 20000; // reconnect if not received heartbeat for 20 seconds
Tuy nhiên trên máy chủ, giá trị heartbeat interval
dường như là một phần của một đối tượng được chia sẻ (Manager, đó là những gì bạn nhận được từ cuộc gọi var io = require("socket.io").listen(server)
), có nghĩa là nó không thể dễ dàng được thay đổi cho các ổ cắm riêng lẻ.
Tôi chắc chắn rằng với một số socket.io hack bạn sẽ có thể để làm cho nó xảy ra, nhưng bạn có thể phá vỡ những thứ khác trong quá trình này ...
Không chắc về thời gian chờ của nhịp tim, nhưng nếu bạn đang sử dụng socket.io-client, có một số tùy chọn hữu ích có thể giúp bạn, như 'kết nối timeout'' kết nối lại '' reconnection tries' – vinayr