Kiểm tra kết nối internet bằng Javascript - Bài tập Javascript
Như bạn thấy trong Facebook và Gmail có chức năng thông báo tình trạng Internet của bạn và thông báo cho người dùng biết, chức năng này khá hay vì bạn có thể lưu trữ những thông tin quan trọng trên Client và lúc có Internet sẽ tiếp tục xử lý. Nếu bạn đang cần làm một chức năng như vậy thì xem bài ...
Như bạn thấy trong Facebook và Gmail có chức năng thông báo tình trạng Internet của bạn và thông báo cho người dùng biết, chức năng này khá hay vì bạn có thể lưu trữ những thông tin quan trọng trên Client và lúc có Internet sẽ tiếp tục xử lý.
Nếu bạn đang cần làm một chức năng như vậy thì xem bài này nhé, mình sẽ hướng dẫn cách kiểm tra kết nối internet bằng Javascript.
Mình không biết Gmail và Facebook họ code như thế nào nhưng mình biết một cách là sử dụng Ajax request tới một file hình (hình càng nhỏ càng tốt, có thể chọn hình 1px x 1px) và dựa vào header request để biết được internet có kết nối hay không. Với cách này thì tấm hình bạn nên đặt tại server của bạn nhé.
1. Kiểm tra kết nối Internet bằng Javascript
Để kiểm tra kết nối internet bạn sử dụng hàm Javascript sau:
function doesConnectionExist() { var xhr = new XMLHttpRequest(); var file = "https://Zaidap.com.net/public/logo.png"; var randomNum = Math.round(Math.random() * 10000); xhr.open('HEAD', file + "?rand=" + randomNum, false); try { xhr.send(); if (xhr.status >= 200 && xhr.status < 304) { return true; } else { return false; } } catch (e) { return false; } }
Hàm này sẽ trả về TRUE nếu có kết nối và FALSE nếu không có kết nối.
Lưu ý là bạn phải chỉnh lại đường dẫn tới file hình thay bằng đường dẫn trên domain của bạn nhé.
Câu hỏi đặt ra là làm thế nào để tự động chạy hàm này? Chúng ta sẽ sử dụng hàm setTimeout() để chạy hàm này liên tục trong một khoảng thời gian nào đó (ví dụ 10 giây).
Trường hợp bạn muốn nếu không kết nối thì xử lý lưu trữ thao tác của người dùng trên máy tính client (Cookie hoặc localStore) thì dựa vào hàm này để check, nếu TRUE thì thực hiện.
function check() { if (!doesConnectionExist()){ // Code lưu trữ thông tin // Code thông báo người dùng // .. } } setTimeout(function(){ check(); }, 10000);
2. Lời kết
Cách trên rất đơn giản nhưng mình thấy khá hiệu quả. Tuy nhiên hiện có một thư viện Javascript chuyên dùng để kiểm tra tình trang Internet đó là thư viện Offline.js, bạn tải về để tham khảo nhé vì nó được viết chuyên nghiệp hơn rất nhiều.