{"_id":"@anderspitman/ws-streamify","_rev":"1-9e8b410a9c98c987cf2de05be518a596","name":"@anderspitman/ws-streamify","dist-tags":{"latest":"0.1.3"},"versions":{"0.1.3":{"name":"@anderspitman/ws-streamify","version":"0.1.3","description":"Pipe Node.js streams over WebSockets (with back-pressure!).","main":"lib/index.js","scripts":{"prepublish":"npm run test && npm run lint && npm run release","postpublish":"npm run clean","test":"npm run build && DEBUG=ws-streamify mocha","start":"npm run build && npm run bundle && DEBUG=ws-streamify babel-node example/server.js","bundle":"browserify example/script.js -o example/bundle.js -t [ babelify ]","build":"babel src/ -d lib --source-maps --copy-files","watch":"npm run build -- --watch","clean":"rm -rf lib","lint":"standard --verbose {src,test,example}/**/*.js *.js | snazzy","release":"export NODE_ENV=production && npm run build"},"keywords":["ws","websocket","backpressure","back-pressure","stream"],"repository":{"type":"git","url":"git+https://github.com/baygeldin/ws-streamify.git"},"bugs":{"url":"https://github.com/baygeldin/ws-streamify/issues"},"homepage":"https://github.com/baygeldin/ws-streamify#readme","author":{"name":"Alexander Baygeldin"},"license":"MPL-2.0","engines":{"node":">=0.12.13"},"devDependencies":{"babel-cli":"^6.8.0","babel-core":"^6.8.0","babel-eslint":"^6.0.4","babel-polyfill":"^6.9.0","babel-preset-es2015":"^6.6.0","babelify":"^7.3.0","browserify":"^13.0.1","chai":"^3.5.0","mocha":"^2.5.1","snazzy":"^4.0.0","source-map-support":"^0.4.0","standard":"^7.1.0","ws":"^1.1.0"},"standard":{"parser":"babel-eslint"},"dependencies":{"debug":"^2.2.0","semver":"^5.1.0"},"gitHead":"0e7f32aee611c1b65003c7dff9157842895db6ee","_id":"@anderspitman/ws-streamify@0.1.3","_npmVersion":"6.4.1","_nodeVersion":"10.8.0","_npmUser":{"name":"anderspitman","email":"tapitman11@gmail.com"},"dist":{"integrity":"sha512-jlmMgxw6MirALFy7ev1yqlRqkcMjx2q7soh4EJHspLTDZSMz+NQv/7/SNgOjPTvAxDpwGT9aYpKKXKT2S1sqGw==","shasum":"ed99924d8c952608bd849852d4e34fed297aeab1","tarball":"https://registry.npmjs.org/@anderspitman/ws-streamify/-/ws-streamify-0.1.3.tgz","fileCount":9,"unpackedSize":36009,"npm-signature":"-----BEGIN PGP SIGNATURE-----\r\nVersion: OpenPGP.js v3.0.4\r\nComment: https://openpgpjs.org\r\n\r\nwsFcBAEBCAAQBQJb5iOFCRA9TVsSAnZWagAAhP4P/R7klO8aWvkoITEdgS6W\nABAaGkh2fcEvPMJzHfJTrPei+w/1SXEsrz/zME6RR3aDp9b20U0qti+SzukI\n2w8ngKV+bADdPfHy9jac/b0fqstNDowZs6WIb0miVp9bqms2VukdNpLnJUQH\nhwTt4AjWcMvo2tc/za6N+hWuX7jzi6jOamu6xhB3EeNJlRi9iRhCpAxpXOBx\n5pl8HbAGYPpL5GSY5FIKYNMYnL1LTV1oiKfQ+mQ6KrtuuVx95tQyDzTNDloF\nxr+tcx9qu9aEN0F4c0koM7T3lPdTRQ5931X1kXoxn5Go0Qsx08NuR9oS3y5h\n9W7ALAF+6o+83shZNsDT2a/9evUILBtMPsqjAfHa9WAiJDAc0T2Fgzk/1mkV\ndGVdLEpSxWD42EYqrpxf0AesmodI+9eNfTRt83H6wrAsg7B9yd2kcg2gz3Sq\nZ8hf7DwxfVDMzjrBTtPq5+bnfoigs6m/uWhnhYgcDzZfgyIU9v4F7Ky2SlZn\nL6jN0UkMP4gNnL19VAnVDp73Q3Ri07N4Wnfhwq2KadfW6ktcGx8jlZuPhxcw\n6MZwWyydDIevc2MXSJdQyDghJCScD6uGg4JZtsxGq+WQTcSlAW1ZgOWEqukj\ncDxorFvr3aPTLBB92tCYzYGjPsMyo33C7usUVz0ymo66H0TPMvrW+MItwPID\nTuA5\r\n=Z7Fo\r\n-----END PGP SIGNATURE-----\r\n","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQC7JT7QK3kaGYqqwjE1g5b3CuDvf+iGY5pp952QRqypbgIhANIGp5QGEXeVppp+EloZag4rOrArYuBEIEEz+ldYEJZN"}]},"maintainers":[{"name":"anderspitman","email":"tapitman11@gmail.com"}],"directories":{},"_npmOperationalInternal":{"host":"s3://npm-registry-packages","tmp":"tmp/ws-streamify_0.1.3_1541809028867_0.8663052942068787"},"_hasShrinkwrap":false}},"time":{"created":"2018-11-10T00:17:08.701Z","0.1.3":"2018-11-10T00:17:09.064Z","modified":"2022-04-04T13:58:09.535Z"},"maintainers":[{"name":"anderspitman","email":"tapitman11@gmail.com"}],"description":"Pipe Node.js streams over WebSockets (with back-pressure!).","homepage":"https://github.com/baygeldin/ws-streamify#readme","keywords":["ws","websocket","backpressure","back-pressure","stream"],"repository":{"type":"git","url":"git+https://github.com/baygeldin/ws-streamify.git"},"author":{"name":"Alexander Baygeldin"},"bugs":{"url":"https://github.com/baygeldin/ws-streamify/issues"},"license":"MPL-2.0","readme":"# ws-streamify [![Build Status](https://travis-ci.org/baygeldin/ws-streamify.svg?branch=master)](https://travis-ci.org/baygeldin/ws-streamify)\n\n\nUtility to pipe Node.js streams over WebSockets in a native way.\n\n## Motivation\nWebSockets is a messenging protocol built over TCP. It's very simple and very good but it has one shortcoming — it does not handle the back-pressure, meaning that you can send massive amounts of data and never know that the other side is running out of memory or having problems consuming so much data. TCP does handle the back-pressure itself, so why just not use it instead of WebSockets? Because TCP channels are not supported in browsers. Another reason to use it is, for example, if you want to bypass a firewall. Fortunately, Node.js already has an awesome solution to handle back-pressure — streams. So, this is a natural solution for JavaScript. In addition you receive a handy stream interface in the browser. So, it's almost like a `net.Socket` in your browser :)\n\n![Yo Dawg I heard you like TCP, so we put a TCP in yo TCP so you can stream while u stream](http://i.imgur.com/MYetOWa.jpg)\n\n## Install\n```\n$ npm install ws-streamify\n```\nIt has support for Node.js >= 0.12. Almost zero dependencies (for browsers, however, it requires polyfills for some Node.js core libraries which is not a problem with webpack or browserify).\n\n## Usage\n```javascript\n// socket is a W3C compliant WebSocket object\n// options is a common options object for Node.js streams\nnew WebSocketStream(socket, options)\n```\n\n```javascript\n// server.js\n\nimport WebSocket from 'ws'\nimport WebSocketStream from 'ws-streamify'\n\nWebSocket.Server({ port: 8000 }).on('connection', (ws) => {\n  let stream = new WebSocketStream(ws, { highWaterMark: 1024 })\n  fs.createReadStream(path.join(__dirname, 'lorem.txt')).pipe(stream)\n})\n```\n\n```javascript\n// client.js\n\nimport WebSocketStream from 'ws-streamify'\n\nlet socket = new WebSocket('ws://localhost:8000')\nlet stream = new WebSocketStream(socket, { highWaterMark: 1024 })\n```\n\n## Running tests\n```\n$ npm install\n$ npm test\n```\n\n## Running example\n```\n$ npm install\n$ npm start\n```\nIt will start a server on localhost with a simple example page. You can click on it and it will read text from the stream and print it. In the terminal and browser consoles flow control messages will appear. Also, check `Network -> ws://localhost:8000/ -> Frames` in the Chrome DevTools.\n","readmeFilename":"README.md"}