2012-02-11 20 views
10

Tôi có một máy chủ Node.js với socket.io:Cấu hình "xhr-polling" làm gì trong socket.io?

var io = require('socket.io').listen(app); 

// assuming io is the Socket.IO server object 
io.configure(function() { 
     io.set("transports", ["xhr-polling"]); 
     io.set("polling duration", 10); 
    }); 

io.sockets.on('connection', function(socket){ 
    console.log('connected: %s', socket.id); 
    ... 
} 

Với XHR-bỏ phiếu và một thời gian bỏ phiếu là 10 giây, điều này có nghĩa là một kết nối mới sẽ được gọi mỗi 10 giây? Nếu vậy, làm thế nào tôi có thể theo dõi người dùng nếu họ tiếp tục ngắt kết nối? Tôi đang chạy node.js trên heroku.

Trả lời

15

xhr-polling có nghĩa là máy chủ của bạn sẽ đợi 10 giây trên bất kỳ GET POST nào nhận được rằng nó không có câu trả lời trước khi trả lời thay vì gửi trả lời trống. Vì vậy, nếu máy chủ của bạn không có thông tin để trả lại sau 10 giây, nó sẽ trả lời lại với một phản hồi trống. Bạn có thể đọc thêm tại đây: Long polling

Cá nhân tôi sử dụng xhr-polling làm tùy chọn dự phòng từ WebSockets trong một ứng dụng trên nodejitsu (một nút lưu trữ như Heroku) và hoạt động tốt. Điều duy nhất là sự kiện "kết nối" mất khoảng 3-8 giây thay vì ngay lập tức như với ứng dụng WebSocket của tôi.

Không có kết nối mới được tạo trên mỗi lần bỏ phiếu mới, nó chỉ là một cách mà chỉ một lần GET hoặc POST được gửi đến máy chủ sau mỗi 10 giây, thay vì phải thăm dò máy chủ sau mỗi giây. một ứng dụng "thời gian thực". Nếu máy chủ trả lời trong vòng chưa đầy 10 giây, sẽ có một cuộc thăm dò khác được gửi để chuẩn bị câu trả lời tiếp theo.

Tôi hy vọng điều này sẽ giúp bạn. Chúc một ngày tốt lành.

3

socket.io tự động kết nối lại khách hàng.

Các vấn đề liên quan