GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
WS_RESPONSE_KEY(3) libdill Library Functions WS_RESPONSE_KEY(3)

ws_response_key - generates a WebSocket response key for a given request key


#include <libdill.h>
int ws_response_key(
    const char* request_key,
    char* response_key);

    

WARNING: This is experimental functionality and the API may change in the future.

WebSocket is a message-based protocol defined in RFC 6455. It can be used as a bidirectional communication channel for communication with a web server.

This is a helper function that can be used when doing a custom HTTP handshake for the WebSocket protocol (see WS_NOHTTP flag). On the server, it can be used to generates an RFC-compliant response key, to be filled into Sec-WebSocket-Accept field, for a request key received from the client. On the client side, it can be used to verify that the response key received from the server is correct.

The generated key is null-terminated.

request_key: The request key, as passed in Sec-WebSocket-Key field.

response_key: Buffer to hold the generated response key. It must be at least WS_KEY_SIZE bytes long.

This function is not available if libdill is compiled with --disable-sockets option.

In case of success the function returns 0. In case of error it returns -1 and sets errno to one of the values below.

EINVAL: Invalid argument.
EPROTO: Supplied request key is not RFC 6455 compliant.


char name[256];
char value[256];
http_recvfield(s, name, sizeof(name), value, sizeof(value), -1);
assert(strcasecmp(name, "Sec-WebSocket-Key") == 0);
ws_response_key(value, response_key);
http_sendfield(s, "Sec-WebSocket-Accept", response_key, -1);

    

mrecv(3) mrecvl(3) msend(3) msendl(3) ws_attach_client(3) ws_attach_client_mem(3) ws_attach_server(3) ws_attach_server_mem(3) ws_detach(3) ws_done(3) ws_recv(3) ws_recvl(3) ws_request_key(3) ws_send(3) ws_sendl(3) ws_status(3)
libdill

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.