2011-09-24 34 views
18

Để phân tích cú pháp phía máy chủ hiệu quả, tôi đang xem trực tiếp giải pháp BSON cho môi trường javascript của trình duyệt. Ý tưởng là sử dụng toàn bộ không gian ASCII bằng phương tiện của các websockets nhị phân. Bất kỳ đề xuất?Thư viện JSON JSON nhị phân có sẵn cho trình duyệt không?

(Bất kỳ nodejs gợi ý được hoan nghênh cũng)

Xem thêm: http://bsonspec.org/

+2

Tôi không chắc chắn lý do tại sao bạn sẽ muốn làm điều này? Chỉ cần chuyển JSON đến/từ trình khách/trình duyệt và sau đó chuyển đổi sang BSON như bạn muốn trên máy chủ. –

+0

JavaScript thực sự không có nhiều hỗ trợ cho các thao tác ở mức độ thấp - giống như các thao tác cho phép BSON hiệu quả hơn JSON - vì vậy bạn có thể phải sử dụng Flash ... –

+2

@ChrisPietschmann: điều này sẽ giới hạn tôi thành HTTP và ví dụ số nguyên trong JSON phải phân tích cú pháp thay vì khả năng gán trực tiếp. (Dự định cũng ít tải trên máy chủ) –

Trả lời

6

Điều này có thể không đầy đủ nhưng mục tiêu của dòng dự án lên với những gì bạn muốn: https://github.com/muhmi/javascript-bson Nó không giống như mã hóa trực tiếp các mảng được đánh máy sẽ hữu ích nhất khi gửi qua WebSocket.

11

Đối với những gì nó có giá trị, có vẻ như đội MongoDB bây giờ có một dự án hỗ trợ javascript BSON:

https://github.com/mongodb/js-bson

Tôi không phải chuyên gia với thư viện, nhưng dự án này tuyên bố để làm việc trong cả hai Node và trình duyệt. Dưới đây là một mẫu cải tiến từ trang web của họ:

<head> 
    <!-- Originally https://raw.github.com/mongodb/js-bson/master/browser_build/bson.js --> 
    <!-- But downloaded and hosted locally --> 
    <script src="./bson.js"></script> 
</head> 
<body onload="start();"> 
<script> 
    function start() { 
    var BSON = bson().BSON; 
    var Long = bson().Long; 

    var doc = { 
     oid: bson().ObjectID(), 
     long: Long.fromNumber(100), 
     date: new Date(), 
     string: "js-bson sample", 
     obj: { 
     string: "Object within an object" 
     } 
    } 
    console.log("doc %o", doc); 

    // Serialize a document 
    var data = BSON.serialize(doc, false, true, false); 
    console.log("data %o", data); 

    // De serialize it again 
    var doc_2 = BSON.deserialize(data); 
    console.log("doc_2 %o", doc_2); 
    } 
</script> 
</body> 

Dưới đây là kết quả của tôi trong Chrome:

enter image description here

+3

Có, nó được hỗ trợ trong trình duyệt, có một trình duyệt được cung cấp: https://github.com/mongodb/js-bson/tree/master/browser_build Cũng có thể cài đặt qua bower sử dụng "bower install bson --save" – arcseldon

+0

@SamuelNeff - Điều đó đơn giản là không chính xác. Nó không chỉ được hỗ trợ chính thức, mà tôi đã thấy nó được sử dụng trong hơn một vài dự án. Bản thân tôi cũng đã sử dụng nó. – JSON

+0

@JSON, Khi tôi đăng rằng gần hai năm trước đây là một trích dẫn từ chính trang web đó. Nó nói "Trình phân tích cú pháp Bson JS/C++ cho nút, được sử dụng trong trình điều khiển Native MongDB". Kể từ đó, họ đã thay đổi và nêu rõ rằng họ hỗ trợ trình duyệt. –

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