Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dominictarr/browser-stream
open pipable streams to and from the browser, with Socket.io
https://github.com/dominictarr/browser-stream
Last synced: 29 days ago
JSON representation
open pipable streams to and from the browser, with Socket.io
- Host: GitHub
- URL: https://github.com/dominictarr/browser-stream
- Owner: dominictarr
- Created: 2012-04-16T07:36:40.000Z (almost 13 years ago)
- Default Branch: master
- Last Pushed: 2012-06-26T11:10:34.000Z (over 12 years ago)
- Last Synced: 2024-04-15T14:23:20.172Z (10 months ago)
- Language: JavaScript
- Homepage:
- Size: 148 KB
- Stars: 55
- Watchers: 4
- Forks: 3
- Open Issues: 0
-
Metadata Files:
- Readme: readme.markdown
Awesome Lists containing this project
- awesome-github-repos - dominictarr/browser-stream - open pipable streams to and from the browser, with Socket.io (JavaScript)
README
# BrowserStream
use `Stream#pipe` to send data to clients or servers.
wrap `socket.io` (or another web socket abstraction that gives a remote `EventEmitter` api)
with a interface for creating streams.### DEPRECIATED
use [mux-demux](http://github.com/dominictarr/mux-demux) with [shoe](http://github.com/substack/shoe)
I'm not gonna use or maintain this any more. If you want to use and maintain this module email me and I'll
add you as owner.## install
```
npm install browser-stream```
## example
### client
``` js
var bs = require('browser-stream')(io.connect('http://localhost:3000'))
var domnode = require('domnode') //see https://github.com/maxogden/dominode
var opts = {options: 'pass an optional object with the createReadStream message. maybe useful!'})
//pipe the 'whatever' stream to the dom with dominode.
bs.createReadStream('whatever', options)
.on('error', function (err) {
//unexpected disconnect
console.error(err)
})
.pipe(domnode('#list', '
```
### server
``` js
io = io.listen(app) //see https://github.com/LearnBoost/socket.io
var _bs = require('browser-stream')
io.sockets.on('connection', function (sock) {
var bs = _bs(sock)
var whatever = new Stream() // SOME KIND OF STREAM
bs.on('connection', function (stream, opts) {
if(stream.name == 'whatever')
whatever.pipe(stream)
//stream.options -- will be the same as `opts` from the client side!
stream.on('error', function (err) {
//the client has unexpectedly disconnected. tidy up!
console.error(err)
})
})
}
```
this will connect `whatever` to the `Dominode` stream, rendering it, in the browser!
## API
``` js
var _bs = require('browser-stream')
io.sockets.on('connection', function (sock) {
var bs = _bs(sock)
bs.on('connection', function (stream) {
//stream is a pipable node.js `Stream` instance
})
})
```
### createReadStream (name, options)
open a `ReadableStream` from the other side.
returns a `ReadableStream`.
the other side of connection will emit a writable stream that is connected to this stream.
### createWriteStream (name, options)
open a `WritableStream` to the other side.
returns a `WritableStream`, the other side will emit a `ReadableStream` connected to this stream.
### createStream (name, options)
open a `Stream` to the other side which is both readable and writable.
returns a `Stream`, the other side will emit a `Stream` connected to this stream.
> note to self, references to a class (`Stream`) should be capitalized, and in backticks.
> references to an instance should be lowercase, and not in backticks unless refuring to
> a specific variable in a code example.