# xhr-write-stream

> writable ordered stream of xhr requests

Latest version **0.1.2** (published 2012-11-27) · MIT license · 0 weekly downloads

## Install

```sh
npm install xhr-write-stream
pnpm add xhr-write-stream
yarn add xhr-write-stream
bun add xhr-write-stream
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.1.2 |
| Published | 2012-11-27 |
| First published | 2012-11-19 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 2 |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | James Halliday |
| Maintainers | substack |
| Keywords | xhr, http, browser, ajax |

## Links

- npm: https://www.npmjs.com/package/xhr-write-stream
- Repository: https://github.com/substack/xhr-write-stream
- npm.io page: https://npm.io/package/xhr-write-stream

## Dependencies (2)

- [concat-stream](https://npm.io/package/concat-stream.md) ~0.1.0
- [ordered-emitter](https://npm.io/package/ordered-emitter.md) ~0.1.0

## Alternatives

- [launchdarkly-js-client-sdk](https://npm.io/package/launchdarkly-js-client-sdk.md) — 2.5M weekly downloads
- [@elastic/elasticsearch](https://npm.io/package/@elastic/elasticsearch.md) — 2.1M weekly downloads
- [@c8y/client](https://npm.io/package/@c8y/client.md) — 15.3K weekly downloads
- [@signaldb/maverickjs](https://npm.io/package/@signaldb/maverickjs.md) — 1.7K weekly downloads
- [@bbc/http-transport-cache](https://npm.io/package/@bbc/http-transport-cache.md) — 1.2K weekly downloads

## Recent versions

- 0.1.2 (latest) — 2012-11-27
- 0.1.1 — 2012-11-27
- 0.1.0 — 2012-11-19
- 0.0.0 — 2012-11-19

## README

# xhr-write-stream

Write data in the browser and receive a properly ordered stream in node from
multiple incoming requests.

This module only goes one way, from the browser to node. Use libraries like
[shoe](http://github.com/substack/shoe) to create full duplex streams between
the browser and node.

# example

browser code:

``` js
var xws = require('xhr-write-stream');

var ws = xws('/robots');
ws.write('beep boop');
ws.write('!!!');
ws.end();
```

server code:

``` js
var http = require('http');
var ecstatic = require('ecstatic')(__dirname + '/static');
var xws = require('xhr-write-stream')();

var server = http.createServer(function (req, res) {
    if (req.url === '/robots') {
        req.pipe(xws(function (stream) {
            stream.pipe(process.stdout, { end : false });
        }));
        req.on('end', res.end.bind(res));
    }
    else ecstatic(req, res)
});
server.listen(5000);
```

bundle up the browser code with
[browserify](https://github.com/substack/node-browserify):

```
$ browserify browser.js -o static/bundle.js
```

then toss down a script tag for the bundle:

``` html
<script src="bundle.js"></script>
```

Run the server and visit the page in the browser:

```
$ node server.js
beep boop!!!
```

# browser methods

``` js
var xws = require('xhr-write-stream')
```

## var ws = xws(path)

Return a writable stream that sends an xhr request to `path` on every `write()`.

The xhr requests are turned back into a single readable stream on the server
side.

# server methods

``` js
var createXWS = require('xhr-write-stream')
```

## var xws = createXWS(opts={})

Create a new `xws` stream pool.

`opts.timeout` is the time in milliseconds to wait for connection activity
before dropping the connection and removing the stream. Default value: 60*1000

## var ws = xws(cb)

Return a writable stream `ws` that you can pipe request data into from multiple
incoming xhr requests on the browser-side.

`cb(stream)` is called with a readable `stream` that aggregates data in order
with the data from each xhr request.

# install

With [npm](https://npmjs.org) do:

```
npm install xhr-write-stream
```

This module makes use of
[http-browserify](https://github.com/substack/http-browserify)
for the xhr-compatibility. If you just `require('xhr-write-stream')` in your
browser code using [browserify](https://github.com/substack/node-browserify),
everything will just work™.

# license

MIT

---
_Source: https://npm.io/package/xhr-write-stream · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
