nn_ws(7)
========

NAME
----
nn_ws - WebSocket transport mechanism


SYNOPSIS
--------
*#include <nanomsg/nn.h>*

*#include <nanomsg/ws.h>*


DESCRIPTION
-----------

THIS IS AN EXPERIMENTAL FEATURE. DO NOT USE.
THE FUNCTIONALITY IS SUBJECT TO CHANGE WITHOUT PRIOR NOTICE.

When calling either `nn_bind()` or `nn_connect()`, omitting the port defaults
to the RFC 6455 default port 80 for HTTP. Example:

ws://127.0.0.1 is equivalent to ws://127.0.0.1:80

URI limitations
~~~~~~~~~~~~~~~
When calling `nn_connect()`, the URI may also optionally include the path to a
resource and/or query parameters.

.Path and query parameters
==========================
    s1 = nn_socket (AF_SP, NN_PAIR);
    nn_connect (s1, "ws://example.com/path?query=value");
==========================

This implementation includes the full path and any query parameters in the
HTTP handshake when establishing connections with `nn_connect()`. This
information is not available via the nanomsg API afterwards, however.

Likewise, this implementation does not examine or use either any path or
query parameters that may be supplied to `nn_bind()`, as it only binds to
the TCP port.  This implementation acts as a limited HTTP server that offers
SP over WebSocket at all URIs for the given TCP address.

Applications should not however depends on this behavior; intervening
infrastructure may proxy, filter or route based on URI, and other
implementations of the SP over WebSocket protocol may offer other
HTTP services at the same TCP port, utilizing the path, query parameters,
or both to determine the service to be used.

Socket Options
~~~~~~~~~~~~~~

NN_WS_MSG_TYPE::
    This option may be set to NN_WS_MSG_TYPE_TEXT or NN_WS_MSG_TYPE_BINARY.
    The value of this determines whether data messages are sent as WebSocket
    text frames, or binary frames, per RFC 6455.  Text frames should contain
    only valid UTF-8 text in their payload, or they will be rejected.  Binary
    frames may contain any data.  Not all WebSocket implementations support
    binary frames.  The default is to send binary frames.
+
This option may also be specified as control data when when sending
a message with `nn_sendmsg()`.

TODO: NN_TCP_NODELAY::
    This option, when set to 1, disables Nagle's algorithm. It also disables
    delaying of TCP acknowledgments. Using this option improves latency at
    the expense of throughput. Type of this option is int. Default value is 0.


EXAMPLE
-------

----
nn_bind (s1, "ws://*:5555");
nn_connect (s2, "ws://myserver:5555");
----

SEE ALSO
--------
linknanomsg:nn_tcp[7]
linknanomsg:nn_inproc[7]
linknanomsg:nn_ipc[7]
linknanomsg:nn_bind[3]
linknanomsg:nn_connect[3]
linknanomsg:nanomsg[7]


AUTHORS
-------
Martin Sustrik <sustrik@250bpm.com>
Jack R. Dunaway <jack@wirebirdlabs.com>
Garrett D'Amore <garrett@damore.org>
