JSPM

  • Created
  • Published
  • Downloads 198170
  • Score
    100M100P100Q166060F

websockets with the node stream api. works in browser and node

Package Exports

  • websocket-stream

This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (websocket-stream) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.

Readme

websocket-stream

npm install websocket-stream

use HTML5 websockets the node way -- with streams

in the browser

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)

on the server

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)
})

options

pass in options as the second argument like this:

websocketStream('ws://foobar', { binaryType: 'blob' })

possible options are...

{ 
  protocol: // optional, string, specify websocket protocol
  binaryType: // optional, string, defaults to 'arraybuffer', can also be 'blob'
}

binary sockets

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 Blobs.

If you write binary data to a websocket on the server, the client will receive binary objects. Same thing goes for strings.

license

BSD LICENSE