Tôi đang cố thực hiện một số thử nghiệm với HTML5, WebSocket và API tệp. Tôi đang sử dụng triển khai WebSocket của Tomcat7. Tôi có thể gửi và nhận tin nhắn văn bản từ servlet. Điều tôi muốn làm bây giờ là gửi từ servlet tới các đối tượng JSON của máy khách, nhưng tôi muốn tránh tin nhắn văn bản để bỏ qua JSON.parse (hoặc tương tự) trên máy khách, vì vậy tôi đang cố gắng gửi các thông điệp nhị phân . Phần servlet là thực sự đơn giản:API tệp - Blob thành JSON
String s = "{arr : [1,2]}";
CharBuffer cbuf = CharBuffer.wrap(s);
CharsetEncoder encoder = Charset.forName("UTF-8").newEncoder();
getWsOutbound().writeBinaryMessage(encoder.encode(cbuf));
getWsOutbound().flush();
Sau thông báo này, trên máy khách tôi thấy rằng tôi nhận được một khung nhị phân, được chuyển đổi sang một đối tượng Blob (http://www.w3.org/TR/FileAPI/#dfn-Blob). Câu hỏi đặt ra là: có thể lấy đối tượng JSON từ Blob không? Tôi đã xem giao diện FileReader (http://www.w3.org/TR/FileAPI/#FileReader-interface) và tôi đã sử dụng mã như thế này để kiểm tra xem FileReader có thể làm gì (dòng đầu tiên tạo Blob mới, vì vậy bạn có thể thử nghiệm nếu muốn):
var b = new Blob([{"test": "toast"}], {type : "application/json"});
var fr = new FileReader();
fr.onload = function(evt) {
var res = evt.target.result;
console.log("onload",arguments, res, typeof res);
};
fr.readAsArrayBuffer(b);
sử dụng tất cả các phương thức "readAs ..." mà tôi đã thấy khi triển khai Trình đọc tệp (Tôi đang sử dụng Chrome 22). Dù sao tôi không tìm thấy cái gì hữu ích.
Bạn có đề xuất nào không? Cảm ơn.
Bạn nghĩ thế nào bạn có thể gửi JSON-strings như thông điệp nhị phân? JSON chỉ là một mã hóa cho các đối tượng và bạn thực sự không thể gửi cấu trúc nhị phân phụ thuộc vào triển khai thực hiện xung quanh một số hàm 'parse'. – Bergi
yeah bạn nói đúng, nó không có ý nghĩa gì cả. Cảm ơn! – Antonio