npm install websocket-stream
use HTML5 websockets the node way -- with streams
you can use browserify to package this module for browser use.
var websocket = require('websocket-stream')
var ws = websocket('ws://realtimecats.com')
ws.pipe(somewhereAwesome)
ws
is a stream and speaks stream events: data
, error
and end
. that means you can pipe output to anything that accepts streams. you can also pipe data into streams (such as a webcam feed or audio data)
npm install -g browserify // install browserify
cd node_modules/websocket-stream
npm install . // install dev dependencies
browserify index.js -s websocket-stream > websocket-stream.js // require websocket-stream.js in your client-side app
using the ws
module you can make a websocket server and use this module to get websocket streams on the server:
var WebSocketServer = require('ws').Server
var websocket = require('websocket-stream')
var wss = new WebSocketServer({server: someHTTPServer})
wss.on('connection', function(ws) {
var stream = websocket(ws)
fs.createReadStream('bigdata.json').pipe(stream)
})
pass in options as the second argument like this:
websocketStream('ws://foobar', { type: someTypedArray })
// e.g. {type: Uint8Array} means you'll get Uint8Arrays back instead of ArrayBuffers
possible options are...
{
protocol: // optional, string, specify websocket protocol
type: // optional, TypedArray object, wraps the ArrayBuffer before emitting
}
To send binary data just write a Buffer or TypedArray to the stream.
On the other end you will receive Buffer instances if it's the server and ArrayBuffer instances if it's the client. The client will default to ArrayBuffer
objects but can also be configured to receive Blob
s.
If you write binary data to a websocket on the server, the client will receive binary objects. Same thing goes for strings.
BSD LICENSE