2013-07-12 33 views
5

Tôi có ý tưởng về một ứng dụng web xã hội và một phần của ý tưởng là lấy dữ liệu từ localstorage vào cơ sở dữ liệu máy chủ. Lý do cho điều này là nói rằng bạn có một ý tưởng và bạn muốn đặt nó vào trạng thái tiếp theo của bạn cho ứng dụng xã hội này, nhưng bạn không có tín hiệu và không dây ở bất cứ đâu. Bạn viết ra trạng thái trên ứng dụng và nó lưu nó vào localstorage để sử dụng khi họ quay trở lại nơi nào đó mà họ có thể kết nối điện thoại của họ trực tuyến.Có thể lấy dữ liệu từ bộ nhớ cục bộ của HTML5 và lưu vào cơ sở dữ liệu máy chủ không?

Sau đó, họ đến một nơi mà họ có thể truy cập trực tuyến, sau đó ứng dụng phát hiện có sự thay đổi trong localstorage và sau đó kéo nó từ đó và lưu vào cơ sở dữ liệu máy chủ.

Có phải điều này có thể xảy ra không, nếu vậy bạn sẽ thực hiện nó như thế nào? Nếu nó không hoàn toàn có thể, bạn có nghĩ rằng điều này có thể xảy ra trong tương lai không?

Tôi rất mong nhận được phản hồi từ nhận xét và câu trả lời của bạn về vấn đề này vì tôi nghĩ đây có thể là một cuộc thảo luận lớn.

+0

Có, điều đó là có thể. Đây chính là số lượng các ứng dụng web sử dụng localstorage (ví dụ: Gmail ngoại tuyến). – eggyal

Trả lời

3

Có thể, tại sao không? Khi bạn lấy dữ liệu từ bộ nhớ cục bộ, dữ liệu hoạt động giống như bất kỳ biến Javascript nào khác, không có giới hạn nào ngăn bạn gửi nó đến máy chủ khác với việc thiếu kết nối Internet.

bạn sẽ thực hiện nó như thế nào?

Trước tiên, bạn cần phát hiện trạng thái kết nối, xem this question. Vì vậy, khi người dùng cố gắng cập nhật trạng thái của họ, nó sẽ kiểm tra xem kết nối có đang trực tuyến hay không và sau đó lưu nó vào bộ nhớ cục bộ.

Sử dụng các phương pháp trong câu hỏi được liên kết để phát hiện khi kết nối được sao lưu và tại thời điểm đó, kéo dữ liệu từ bộ nhớ cục bộ và gửi đến máy chủ qua , sau đó xóa bộ nhớ cục bộ để ngăn dữ liệu trùng lặp được gửi .

+0

Cảm ơn bạn rất nhiều vì câu trả lời này, tôi đã google và không tìm thấy gì nên điều này sẽ giúp ích rất nhiều. Cảm ơn bạn.:) – CheckeredMichael

3

Bạn có thể định kỳ kiểm tra navigator.onLine trong Javascript của mình để nhận trạng thái trực tuyến của thiết bị. Lưu ý rằng trong khi

navigator.onLine == false 

an toàn cho bạn biết rằng một thiết bị của ẩn,

navigator.onLine == true 

không có nghĩa là nó có quyền truy cập vào mạng Internet và có thể thực hiện các yêu cầu, chỉ là nó được kết nối với một số loại mạng.

Khi bạn cho rằng thiết bị không ngoại tuyến bạn muốn gửi một yêu cầu ajax (tôi khuyên bạn sử dụng jQuery $ .ajax chức năng) mà bạn POST dữ liệu từ localStorage

(localStorage.getItem('dataToPull')) 

bạn thành kịch bản PHP , sau đó chèn nó vào cơ sở dữ liệu MySQL của bạn.

Nếu yêu cầu ajax đó không thành công và bạn chắc chắn không nhận được lỗi PHP/MySQL, bạn có thể giả định rằng thiết bị được kết nối với mạng và navigator.onLine là đúng, không có kết nối internet. Sau đó, bạn có thể thực hiện một số xử lý lỗi, ví dụ: thăm dò thiết bị một lần nữa sau 5 phút.

+0

Cảm ơn bạn vì điều này, nó sẽ giúp tôi. – CheckeredMichael

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