Qpid Proton JavaScript Language Bindings TODO List
==================================================

Network code is currently limited to a WebSocket transport, including for Node.js
It would be good to allow a configurable transport so that Node.js and Chrome
packaged apps could use native TCP sockets.

The JavaScript binding is pure JavaScript, which has been trans-compiled from C
to JavaScript using emscripten. This allows the same code to be used in a browser
and Node.js, but it potentially has a performance penalty in Node.js. An alternative
for Node.js might be to build a SWIG binding (recent versions of SWIG support
JavaScript). This should be viewed as a complementary not competing approach as
it would only work for environments like Node.js and definitely *not* browser
environments, which clearly require pure JavaScript.

Optimisation are enabled for compiling and linking but there hasn't been any
profiling done yet. The binding code *shouldn't* be the bottleneck but it's
always possible that I messed up.

Error handling is nowhere near as good as it should be, though this is mostly
because Messenger itself is a bit lacking on the error handling/recovery front.

Although described as "Proton" this is currently a JavaScript binding for Messenger
and associated Message & Data classes. There has been some talk on the user list
of an alternative reactive API based on proton Engine. This might ultimately be
a better fit for JavaScript but it is very much in its infancy and I haven't
really looked at it yet.

proton-j seems to use hawt-dispatch, which is modelled after Grand Central
Dispatch so I need to work out what it's using it do do and whether there are
parallels in proton-c

Although the WebSocket transport uses the sub-protocol 'AMQPWSB10' as specified
in http://docs.oasis-open.org/amqp-bindmap/amqp-wsb/v1.0/amqp-wsb-v1.0.html
section 2.1 it is not technically compliant with the spec. as the AMQP data is
created by the proton-c code, which produces a data-stream for the TCP transport
whereas the WebSocket spec. seems to want to make use of the fact that WebSocket
is a frame based transport (whereas TCP is not). This is quite hard to resolve
as the binding simply sends the contents of the octet buffer created by proton
over the transport and thus to make this binding compliant with the spec. would
require a change to the underlying proton-c code! It is possible that this may be
done in future as SCTP support would require the ability to push AMQP frames too.
In the mean time fortunately the Java Broker WebSocket transport is actually
tolerant of this off-spec. behaviour. My personal view is that both approaches
should be valid and in particular using the standard TCP framing means that it
is straightforward to create WebSocket<->TCP proxies, which is useful given that
only the Java Broker currently has a native WebSocket transport.


