root / HServer / 00.Server / 00.Program / node_modules / engine.io-parser / Readme.md
이력 | 보기 | 이력해설 | 다운로드 (6.15 KB)
| 1 |
|
|---|---|
| 2 |
# engine.io-parser |
| 3 |
|
| 4 |
[](http://travis-ci.org/socketio/engine.io-parser) |
| 5 |
[](http://badge.fury.io/js/engine.io-parser) |
| 6 |
|
| 7 |
This is the JavaScript parser for the engine.io protocol encoding, |
| 8 |
shared by both |
| 9 |
[engine.io-client](https://github.com/socketio/engine.io-client) and |
| 10 |
[engine.io](https://github.com/socketio/engine.io). |
| 11 |
|
| 12 |
## How to use |
| 13 |
|
| 14 |
### Standalone |
| 15 |
|
| 16 |
The parser can encode/decode packets, payloads, and payloads as binary |
| 17 |
with the following methods: `encodePacket`, `decodePacket`, `encodePayload`, |
| 18 |
`decodePayload`, `encodePayloadAsBinary`, `decodePayloadAsBinary`. |
| 19 |
|
| 20 |
The browser-side parser also includes `encodePayloadAsArrayBuffer` and `encodePayloadAsBlob`. |
| 21 |
|
| 22 |
Example: |
| 23 |
|
| 24 |
```js |
| 25 |
var parser = require('engine.io-parser');
|
| 26 |
|
| 27 |
var data = new Buffer(5); |
| 28 |
for (var i = 0; i < data.length; i++) { data[i] = i; }
|
| 29 |
|
| 30 |
parser.encodePacket({ type: 'message', data: data }, function(encoded) {
|
| 31 |
var decodedData = parser.decodePacket(encoded); // { type: 'message', data: data }
|
| 32 |
}); |
| 33 |
``` |
| 34 |
|
| 35 |
### With browserify |
| 36 |
|
| 37 |
Engine.IO Parser is a commonjs module, which means you can include it by using |
| 38 |
`require` on the browser and package using [browserify](http://browserify.org/): |
| 39 |
|
| 40 |
1. install the parser package |
| 41 |
|
| 42 |
```shell |
| 43 |
npm install engine.io-parser |
| 44 |
``` |
| 45 |
|
| 46 |
1. write your app code |
| 47 |
|
| 48 |
```js |
| 49 |
var parser = require('engine.io-parser');
|
| 50 |
|
| 51 |
var testBuffer = new Int8Array(10); |
| 52 |
for (var i = 0; i < testBuffer.length; i++) testBuffer[i] = i; |
| 53 |
|
| 54 |
var packets = [{ type: 'message', data: testBuffer.buffer }, { type: 'message', data: 'hello' }];
|
| 55 |
|
| 56 |
parser.encodePayload(packets, function(encoded) {
|
| 57 |
parser.decodePayload(encoded, |
| 58 |
function(packet, index, total) {
|
| 59 |
var isLast = index + 1 == total; |
| 60 |
if (!isLast) {
|
| 61 |
var buffer = new Int8Array(packet.data); // testBuffer |
| 62 |
} else {
|
| 63 |
var message = packet.data; // 'hello' |
| 64 |
} |
| 65 |
}); |
| 66 |
}); |
| 67 |
``` |
| 68 |
|
| 69 |
1. build your app bundle |
| 70 |
|
| 71 |
```bash |
| 72 |
$ browserify app.js > bundle.js |
| 73 |
``` |
| 74 |
|
| 75 |
1. include on your page |
| 76 |
|
| 77 |
```html |
| 78 |
<script src="/path/to/bundle.js"></script> |
| 79 |
``` |
| 80 |
|
| 81 |
## Features |
| 82 |
|
| 83 |
- Runs on browser and node.js seamlessly |
| 84 |
- Runs inside HTML5 WebWorker |
| 85 |
- Can encode and decode packets |
| 86 |
- Encodes from/to ArrayBuffer or Blob when in browser, and Buffer or ArrayBuffer in Node |
| 87 |
|
| 88 |
## API |
| 89 |
|
| 90 |
Note: `cb(type)` means the type is a callback function that contains a parameter of type `type` when called. |
| 91 |
|
| 92 |
### Node |
| 93 |
|
| 94 |
- `encodePacket` |
| 95 |
- Encodes a packet. |
| 96 |
- **Parameters** |
| 97 |
- `Object`: the packet to encode, has `type` and `data`. |
| 98 |
- `data`: can be a `String`, `Number`, `Buffer`, `ArrayBuffer` |
| 99 |
- `Boolean`: optional, binary support |
| 100 |
- `Function`: callback, returns the encoded packet (`cb(String)`) |
| 101 |
- `decodePacket` |
| 102 |
- Decodes a packet. Data also available as an ArrayBuffer if requested. |
| 103 |
- Returns data as `String` or (`Blob` on browser, `ArrayBuffer` on Node) |
| 104 |
- **Parameters** |
| 105 |
- `String` | `ArrayBuffer`: the packet to decode, has `type` and `data` |
| 106 |
- `String`: optional, the binary type |
| 107 |
|
| 108 |
- `encodeBase64Packet` |
| 109 |
- Encodes a packet with binary data in a base64 string (`String`) |
| 110 |
- **Parameters** |
| 111 |
- `Object`: the packet to encode, has `type` and `data` |
| 112 |
- `Function`: callback, returns the base64 encoded message (`cb(String)`) |
| 113 |
- `decodeBase64Packet` |
| 114 |
- Decodes a packet encoded in a base64 string. |
| 115 |
- **Parameters** |
| 116 |
- `String`: the base64 encoded message |
| 117 |
- `String`: optional, the binary type |
| 118 |
|
| 119 |
- `encodePayload` |
| 120 |
- Encodes multiple messages (payload). |
| 121 |
- If any contents are binary, they will be encoded as base64 strings. Base64 |
| 122 |
encoded strings are marked with a b before the length specifier |
| 123 |
- **Parameters** |
| 124 |
- `Array`: an array of packets |
| 125 |
- `Boolean`: optional, binary support |
| 126 |
- `Function`: callback, returns the encoded payload (`cb(String)`) |
| 127 |
- `decodePayload` |
| 128 |
- Decodes data when a payload is maybe expected. Possible binary contents are |
| 129 |
decoded from their base64 representation. |
| 130 |
- **Parameters** |
| 131 |
- `String`: the payload |
| 132 |
- `String`: optional, the binary type |
| 133 |
- `Function`: callback, returns (cb(`Object`: packet, `Number`:packet index, `Number`:packet total)) |
| 134 |
|
| 135 |
- `encodePayloadAsBinary` |
| 136 |
- Encodes multiple messages (payload) as binary. |
| 137 |
- **Parameters** |
| 138 |
- `Array`: an array of packets |
| 139 |
- `Function`: callback, returns the encoded payload (`cb(Buffer)`) |
| 140 |
- `decodePayloadAsBinary` |
| 141 |
- Decodes data when a payload is maybe expected. Strings are decoded by |
| 142 |
interpreting each byte as a key code for entries marked to start with 0. See |
| 143 |
description of encodePayloadAsBinary. |
| 144 |
- **Parameters** |
| 145 |
- `Buffer`: the buffer |
| 146 |
- `String`: optional, the binary type |
| 147 |
- `Function`: callback, returns the decoded packet (`cb(Object)`) |
| 148 |
|
| 149 |
### Browser |
| 150 |
|
| 151 |
- `encodePayloadAsArrayBuffer` |
| 152 |
- Encodes multiple messages (payload) as binary. |
| 153 |
- **Parameters** |
| 154 |
- `Array`: an array of packets |
| 155 |
- `Function`: callback, returns the encoded payload (`cb(ArrayBuffer)`) |
| 156 |
- `encodePayloadAsBlob` |
| 157 |
- Encodes multiple messages (payload) as blob. |
| 158 |
- **Parameters** |
| 159 |
- `Array`: an array of packets |
| 160 |
- `Function`: callback, returns the encoded payload (`cb(Blob)`) |
| 161 |
|
| 162 |
## Tests |
| 163 |
|
| 164 |
Standalone tests can be run with `make test` which will run both node.js and browser tests. |
| 165 |
|
| 166 |
Browser tests are run using [zuul](https://github.com/defunctzombie/zuul). |
| 167 |
(You must have zuul setup with a saucelabs account.) |
| 168 |
|
| 169 |
You can run the tests locally using the following command: |
| 170 |
|
| 171 |
``` |
| 172 |
./node_modules/.bin/zuul --local 8080 -- test/index.js |
| 173 |
``` |
| 174 |
|
| 175 |
## Support |
| 176 |
|
| 177 |
The support channels for `engine.io-parser` are the same as `socket.io`: |
| 178 |
- irc.freenode.net **#socket.io** |
| 179 |
- [Google Groups](http://groups.google.com/group/socket_io) |
| 180 |
- [Website](http://socket.io) |
| 181 |
|
| 182 |
## Development |
| 183 |
|
| 184 |
To contribute patches, run tests or benchmarks, make sure to clone the |
| 185 |
repository: |
| 186 |
|
| 187 |
```bash |
| 188 |
git clone git://github.com/LearnBoost/engine.io-parser.git |
| 189 |
``` |
| 190 |
|
| 191 |
Then: |
| 192 |
|
| 193 |
```bash |
| 194 |
cd engine.io-parser |
| 195 |
npm install |
| 196 |
``` |
| 197 |
|
| 198 |
See the `Tests` section above for how to run tests before submitting any patches. |
| 199 |
|
| 200 |
## License |
| 201 |
|
| 202 |
MIT |