2010-07-09 34 views
5

Có cách nào để biết liệu người dùng trên trang web của tôi có còn lại (tức là kết nối bị ngắt, điều hướng đi, v.v.) trong thời gian thực không?Làm cách nào để biết người dùng đã rời khỏi trang web của tôi

Tôi đang xây dựng một trang web RoR và muốn bắt đầu một sự kiện ngay sau khi một người dùng rời khỏi trang web của tôi vì lý do gì (ví dụ kết nối, hướng đi từ miền vv)

Cảm ơn trước sự giúp đỡ nào.

+0

Điều gì sẽ xảy ra nếu người dùng rời khỏi máy tính của mình? – SLaks

+0

@SLaks: JavaScript, thời gian chờ cho năm hoặc mười phút trên một trang và sau đó sử dụng AJAX để lấy lại thông tin cho máy chủ. (Edit: Đương nhiên điều này sẽ không chỉ dành cho người dùng ở trên cùng một trang dài. Nhưng tôi chỉ cho thấy rằng có khả năng!) –

Trả lời

6

Không, không có.

Điều tốt nhất bạn có thể làm là gửi yêu cầu AJAX mỗi X giây (có lẽ chỉ khi người dùng di chuyển chuột). Nếu máy chủ không nhận được bất kỳ yêu cầu nào trong 2X giây, giả sử rằng người dùng đã rời khỏi.

0

Tất cả những gì tôi có thể nghĩ là JavaScript onunload sự kiện trong thẻ nội dung của bạn ... Tôi không biết khả năng đó là như thế nào, nhưng về lý thuyết bạn có thể sử dụng cuộc gọi AJAX để gửi thông tin về ngắt kết nối sắp xảy ra.

Tất nhiên, nếu quá trình trình duyệt vừa bị giết sẽ không hoạt động.

Và tôi không chắc liệu Rails có bất kỳ phép thuật độc đáo nào thực hiện điều tương tự này hay không (ngoại trừ tốt hơn).

+0

Điều này sẽ không hoạt động nếu người dùng mất kết nối của mình. – SLaks

+0

@SLaks: Đúng vậy. Tôi đoán cách tiếp cận của bạn chủ động gửi thông tin nhịp tim là tốt hơn. –

2

Bạn có thể làm một số yêu cầu trong hàm này:

$(window).bind('beforeunload', function(){ 
    // there 
}); 

Gửi một số Ajax hoặc một cái gì đó để nói với máy chủ mà người dùng này rời khỏi trang, nhưng đây không phải là tốt ý kiến. Trong Google Analytics và trong các dịch vụ thống kê khác, bạn đã có thể xem người dùng ở lại trong trang của bạn trong bao lâu.

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