5.6 KiB
BinaryJS API Reference
Class: binaryjs.BinaryServer Node.js only
This class is a the BinaryJS websocket server. It is an EventEmitter
.
new binaryjs.BinaryServer([options], [callback])
options
Objecthost
String. Default0.0.0.0
port
Numberserver
Object. Use an existinghttp.Server
orws.Server
instead of creating a new one.path
String. The path on which to accept WebSocket connectionschunkSize
Number. Passed into constructor of connectingBinaryClient
. Default40960
Construct a new server object.
Either port
must be provided or server
to use an existing http.Server
.
server.clients
A hash of all connected clients. Keys are client ids and values are instances of binaryjs.BinaryClient
.
server.close()
Close the server and terminate all clients.
Event: 'error'
function (error) { }
If the underlying server emits an error, it will be forwarded here.
Event: 'connection'
function (client) { }
When a new BinaryJS connection is established. client
is an object of type binaryjs.BinaryClient
.
Class: binaryjs.BinaryClient Node.js and browsers
This class represents a BinaryJS websocket client connection. It is an EventEmitter
.
new binaryjs.BinaryClient(address, [options])
Connects to the given address
(in the form ws://url
).
options
ObjectchunkSize
Number. Size of chunks when usingclient.send
. Default40960
BinaryClient
can also be obtained in the connection
event of a BinaryServer
client.streams
A hash of all current streams. Keys are stream ids and values are instances of binaryjs.BinaryStream
.
client.createStream([meta])
Returns binaryjs.BinaryStream
Creates a new readable and writable binaryjs.BinaryStream
object, triggering a stream
event on the remote client with the given meta
data parameter.
client.send(data, [meta])
Returns binaryjs.BinaryStream
Creates a new readable and writable binaryjs.BinaryStream
object with the given meta
data and sends data
through the connection.
If data
is a Node.js Buffer
or browser ArrayBuffer
, ArrayBufferView
, Blob
, or File
, the data will be chunked according to options.chunkSize
and streamed through the new BinaryStream
.
If data
is a Node.js stream (including BinaryStream
objects), it will be piped into a new BinaryStream
If data
is any other type, it will be sent through the stream in one chunk.
client.close()
Gracefully closes the connection.
Event: 'stream'
function (stream, meta) { }
Emitted when a new stream is initialized by the remote client.
stream
is a binaryjs.BinaryStream
object that is both readable and writable.
meta
is the data given when the stream was created via createStream(meta)
or send(data, meta)
, sent verbatim.
Event: 'error'
function (error) { }
If the client emits an error, this event is emitted (errors from the underlying net.Socket
are forwarded here).
Event: 'close'
function () { }
Is emitted when the connection is closed.
The close
event is also emitted when then underlying net.Socket
closes the connection (end
or close
).
Event: 'open'
function () { }
Emitted when the connection is established.
Class: binaryjs.BinaryStream Node.js and browsers
This class represents a BinaryJS client stream. It is a Node.js Stream
and EventEmitter
.
BinaryStreams are created through the BinaryClient
createStream
and send
methods and received through the stream
event.
Because BinaryStream
extends the Node.js stream
, all other streams can be piped into or from a BinaryStream
. The browser implements a browser version of the Node.js stream
API.
stream.id
A id number identifying the stream. Unique to the given client, but not globally.
stream.readable
Whether stream is readable.
stream.writable
Whether stream is writable.
stream.paused
Whether stream is paused.
stream.pause()
Pause the stream.
stream.resume()
Resume the stream.
stream.end()
Sends an end message, triggering the end
event and marks stream.readable
false but does not close the socket.
stream.write(data)
Returns true
if data is written immediately or false
if data is buffered in socket.
Writes data
through the connection. data
can be any JSON compatible type or binary data. Note data will not be chunked. client.send
should be used for chunking.
stream.destroy()
Immediately closed the socket.
stream.pipe(destination, [options])
This is a Stream.prototype method available on all Streams.
See: http://nodejs.org/api/stream.html#stream_stream_pipe_destination_options
Event: 'data'
function (data) { }
Is emitted when data is received through the socket.
For non-binary types, data is received verbatim as sent.
On Node.js, binary data is received as Buffer
.
On browsers, binary data is received as ArrayBuffer
.
Event: 'pause'
function () { }
Is emitted when stream is paused.
Event: 'resume'
function () { }
Is emitted when stream is resumed.
Event: 'end'
function () { }
Is emitted when stream.end
has been called. stream.readable
is set to false
.
Event: 'close'
function () { }
Emitted when the connection is destroyed or its underlying socket is closed.
Event: 'drain'
function () { }
Emitted when the underlying socket buffer has drained. Used for stream pipe internals.
Event: 'error'
function (error) { }
If the client emits an error, this event is emitted (errors from the underlying net.Socket are forwarded here). stream.readable
and stream.writable
are set to false
.