123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102 |
- nn_ws(7)
- ========
- NAME
- ----
- nn_ws - WebSocket transport mechanism
- SYNOPSIS
- --------
- *#include <nanomsg/nn.h>*
- *#include <nanomsg/ws.h>*
- DESCRIPTION
- -----------
- The WebSocket transport uses the framing protocol specified in RFC 6455 to
- transport messages. The initial handshake is done using HTTP headers, with the
- `Sec-Websocket-Protocol` header set to the SP protocol used by the server.
- For example, a REQ client will send `rep.sp.nanomsg.org`.
- Each SP message is transported in a single WebSocket frame, with no additional
- data or headers applied. By default this library sends and expects to receive
- binary frames.
- When calling either `nn_bind()` or `nn_connect()`, omitting the port defaults
- to the RFC 6455 default port 80 for HTTP. For example, `ws://127.0.0.1` is
- equivalent to `ws://127.0.0.1:80`
- WebSocket over TLS is not supported by this library, at this time.
- 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, however, should not depend 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
- --------
- <<nn_tcp#,nn_tcp(7)>>
- <<nn_inproc#,nn_inproc(7)>>
- <<nn_ipc#,nn_ipc(7)>>
- <<nn_bind#,nn_bind(3)>>
- <<nn_connect#,nn_connect(3)>>
- <<nanomsg#,nanomsg(7)>>
- AUTHORS
- -------
- link:mailto:sustrik@250bpm.com[Martin Sustrik]
- link:mailto:jack@wirebirdlabs.com[Jack R. Dunaway]
- link:mailto:garrett@damore.org[Garrett D'Amore]
|