2 # socket.io-parser
4 [![Build Status](https://secure.travis-ci.org/socketio/socket.io-parser.svg)](http://travis-ci.org/socketio/socket.io-parser)
5 [![NPM version](https://badge.fury.io/js/socket.io-parser.svg)](http://badge.fury.io/js/socket.io-parser)
7 A socket.io encoder and decoder written in JavaScript complying with version `3`
8 of [socket.io-protocol](https://github.com/socketio/socket.io-protocol).
9 Used by [socket.io](https://github.com/automattic/socket.io) and
10 [socket.io-client](https://github.com/automattic/socket.io-client).
12 ## Parser API
14 socket.io-parser is the reference implementation of socket.io-protocol. Read
15 the full API here:
16 [socket.io-protocol](https://github.com/learnboost/socket.io-protocol).
18 ## Example Usage
20 ### Encoding and decoding a packet
22 ```js
23 var parser = require('socket.io-parser');
24 var encoder = new parser.Encoder();
25 var packet = {
26 type: parser.EVENT,
27 data: 'test-packet',
28 id: 13
29 };
30 encoder.encode(packet, function(encodedPackets) {
31 var decoder = new parser.Decoder();
32 decoder.on('decoded', function(decodedPacket) {
33 // decodedPacket.type == parser.EVENT
34 // decodedPacket.data == 'test-packet'
35 // decodedPacket.id == 13
36 });
38 for (var i = 0; i < encodedPackets.length; i++) {
39 decoder.add(encodedPackets[i]);
40 }
41 });
42 ```
44 ### Encoding and decoding a packet with binary data
46 ```js
47 var parser = require('socket.io-parser');
48 var encoder = new parser.Encoder();
49 var packet = {
50 type: parser.BINARY_EVENT,
51 data: {i: new Buffer(1234), j: new Blob([new ArrayBuffer(2)])}
52 id: 15
53 };
54 encoder.encode(packet, function(encodedPackets) {
55 var decoder = new parser.Decoder();
56 decoder.on('decoded', function(decodedPacket) {
57 // decodedPacket.type == parser.BINARY_EVENTEVENT
58 // Buffer.isBuffer(decodedPacket.data.i) == true
59 // Buffer.isBuffer(decodedPacket.data.j) == true
60 // decodedPacket.id == 15
61 });
63 for (var i = 0; i < encodedPackets.length; i++) {
64 decoder.add(encodedPackets[i]);
65 }
66 });
67 ```
68 See the test suite for more examples of how socket.io-parser is used.
71 ## License
73 MIT