pull-ws
Use websockets via pull-stream interface. both client and server.
example - client
var connect =// OR: require('pull-ws').connect
example - server
var createServer =
api
connect = require('pull-ws/client')
connect(url, cb | {binary: boolean, onConnect: cb})
Create a websocket client connection. set binary: true to get a stream of arrayBuffers (on the browser). defaults to true on node, but to strings on the browser. this may cause a problems if your application assumes binary.
else, just provide the callback.
createServer = require('pull-ws/server')
create pull stream websocket servers. the servers take a lot more options than clients.
createServer(opts?, onConnection)
onConnect(stream)
is called every time a connection is received.
opts
takes the same server options as ws module
example
one duplex service you may want to use this with is muxrpc
var ws =var pull =wsvar stream = ws
if the connection fails, the first read from the stream will be an error, otherwise, to get a handle of stream end/error pass a callback to connect.
ws
To run the server over TLS:
var tlsOpts = key: fs cert: fs;ws
To add client-authentication to the server, you can set verifyClient
.
Documentation here.
{ return infosecure == true}ws
use with an http server
if you have an http server that you also need to serve stuff
over, and want to use a single port, use the server
option.
var http =var server = httpws
core, websocket wrapping functions
these modules are used internally, to wrap a websocket. you probably won't need to touch these, but they are documented anyway.
require('pull-ws/duplex')(socket, opts?)
turn a websocket into a duplex pull stream.
If provided, opts
is passed to pws.sink(socket, opts)
.
Websockets do not support half open mode. see allowHalfOpen option in net module
If you have a protocol that assumes halfOpen connections, but are using a networking protocol like websockets that does not support it, I suggest using pull-goodbye with your protocol.
The duplex stream will also contain a copy of the properties from
the http request that became the websocket. they are method
, url
,
headers
and upgrade
.
also exposed at: var duplex = require('pull-ws')
require('pull-ws/sink')(socket, opts?)
Create a pull-stream Sink
that will write data to the socket
.
opts
may be {closeOnEnd: true, onClose: onClose}
.
onClose
will be called when the sink ends. If closeOnEnd=false
the stream will not close, it will just stop emitting data.
(by default closeOnEnd
is true)
If opts
is a function, then onClose = opts; opts.closeOnEnd = true
.
var pull = ;var wsSink = ; // connect to the echo endpoint for test/server.jsvar socket = 'wss://echo.websocket.org'; // write values to the socket; socket;
also exposed at require('pull-ws').sink
require('pull-ws/source')(socket)
Create a pull-stream Source
that will read data from the socket
.
var pull = ; // we just need the source, so cherrypickvar wsSource = ; ;
also exposed at require('pull-ws').source
LICENSE
MIT