82 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| # BSER Binary Serialization
 | |
| 
 | |
| BSER is a binary serialization scheme that can be used as an alternative to JSON.
 | |
| BSER uses a framed encoding that makes it simpler to use to stream a sequence of
 | |
| encoded values.
 | |
| 
 | |
| It is intended to be used for local-IPC only and strings are represented as binary
 | |
| with no specific encoding; this matches the convention employed by most operating
 | |
| system filename storage.
 | |
| 
 | |
| For more details about the serialization scheme see
 | |
| [Watchman's docs](https://facebook.github.io/watchman/docs/bser.html).
 | |
| 
 | |
| ## API
 | |
| 
 | |
| ```js
 | |
| var bser = require('bser');
 | |
| ```
 | |
| 
 | |
| ### bser.loadFromBuffer
 | |
| 
 | |
| The is the synchronous decoder; given an input string or buffer,
 | |
| decodes a single value and returns it.  Throws an error if the
 | |
| input is invalid.
 | |
| 
 | |
| ```js
 | |
| var obj = bser.loadFromBuffer(buf);
 | |
| ```
 | |
| 
 | |
| ### bser.dumpToBuffer
 | |
| 
 | |
| Synchronously encodes a value as BSER.
 | |
| 
 | |
| ```js
 | |
| var encoded = bser.dumpToBuffer(['hello']);
 | |
| console.log(bser.loadFromBuffer(encoded)); // ['hello']
 | |
| ```
 | |
| 
 | |
| ### BunserBuf
 | |
| 
 | |
| The asynchronous decoder API is implemented in the BunserBuf object.
 | |
| You may incrementally append data to this object and it will emit the
 | |
| decoded values via its `value` event.
 | |
| 
 | |
| ```js
 | |
| var bunser = new bser.BunserBuf();
 | |
| 
 | |
| bunser.on('value', function(obj) {
 | |
|   console.log(obj);
 | |
| });
 | |
| ```
 | |
| 
 | |
| Then in your socket `data` event:
 | |
| 
 | |
| ```js
 | |
| bunser.append(buf);
 | |
| ```
 | |
| 
 | |
| ## Example
 | |
| 
 | |
| Read BSER from socket:
 | |
| 
 | |
| ```js
 | |
| var bunser = new bser.BunserBuf();
 | |
| 
 | |
| bunser.on('value', function(obj) {
 | |
|   console.log('data from socket', obj);
 | |
| });
 | |
| 
 | |
| var socket = net.connect('/socket');
 | |
| 
 | |
| socket.on('data', function(buf) {
 | |
|   bunser.append(buf);
 | |
| });
 | |
| ```
 | |
| 
 | |
| Write BSER to socket:
 | |
| 
 | |
| ```js
 | |
| socket.write(bser.dumpToBuffer(obj));
 | |
| ```
 |