2011-09-24 20 views
18

Para un análisis eficiente del lado del servidor, estoy buscando una solución BSON directamente para el entorno JavaScript del navegador. La idea es utilizar todo el espacio ASCII por medio de websockets binarios. ¿Alguna sugerencia?¿Hay una biblioteca javascript JSON binaria disponible para navegadores?

(Cualquier nodejs sugerencias son bienvenidos también)

Ver también: http://bsonspec.org/

+2

No estoy seguro de por qué desea hacer esto? Simplemente pase JSON a/desde el cliente/navegador y luego conviértalo a BSON como lo desea en el servidor. –

+0

JavaScript realmente no tiene mucho soporte para manipulaciones de bajo nivel, como las que permiten que BSON sea más eficiente que JSON, por lo que probablemente tenga que usar Flash ... –

+2

@ChrisPietschmann: esto me limitaría a HTTP y por ejemplo los enteros en JSON tienen que analizarse en lugar de la posibilidad de asignación directa. (La intención también es menor carga en el servidor) –

Respuesta

6

Esto podría ser incompleta, pero el objetivo de la línea de proyecto con lo que quieren: https://github.com/muhmi/javascript-bson No se ve como que codifica directamente a las matrices tipadas que serían las más útiles para enviar a través de WebSocket.

11

Por lo que vale la pena, parece que el equipo de MongoDB ahora tiene un proyecto apoyado Javascript BSON:

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

No soy un experto en la biblioteca, pero el proyecto afirma que trabaja tanto en el Nodo y el navegador. A continuación se muestra un ejemplo modificado desde su sitio:

<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> 

A continuación se presentan los resultados de mi en Chrome:

enter image description here

+3

Sí, es compatible con el navegador, se proporciona una compilación del navegador: https://github.com/mongodb/js-bson/tree/master/browser_build También se puede instalar a través de bower usando "bower install bson --save" – arcseldon

+0

@SamuelNeff - Eso simplemente no es correcto. No solo es oficialmente compatible, sino que lo he visto utilizado en más de un par de proyectos. Yo mismo lo he usado también. – JSON

+0

@JSON, cuando publiqué eso hace casi dos años, fue una cita del sitio en sí. Dijo "Un analizador Bson JS/C++ para el nodo, utilizado en el controlador nativo MongoDB". Desde entonces han cambiado y afirman específicamente que son compatibles con el navegador. –

Cuestiones relacionadas