#include #include #include #include #include int onclose(wsclient *c) { fprintf(stderr, "onclose called: %d\n", c->sockfd); return 0; } int onerror(wsclient *c, wsclient_error *err) { fprintf(stderr, "onerror: (%d): %s\n", err->code, err->str); if(err->extra_code) { errno = err->extra_code; perror("recv"); } return 0; } int onmessage(wsclient *c, wsclient_message *msg) { fprintf(stderr, "onmessage: (%llu): %s\n", msg->payload_len, msg->payload); return 0; } int onopen(wsclient *c) { fprintf(stderr, "onopen called: %d\n", c->sockfd); libwsclient_send(c, "Hello onopen"); return 0; } int main(int argc, char **argv) { //Initialize new wsclient * using specified URI wsclient *client = libwsclient_new("ws://echo.websocket.org"); if(!client) { fprintf(stderr, "Unable to initialize new WS client.\n"); exit(1); } //set callback functions for this client libwsclient_onopen(client, &onopen); libwsclient_onmessage(client, &onmessage); libwsclient_onerror(client, &onerror); libwsclient_onclose(client, &onclose); //bind helper UNIX socket to "test.sock" //One can then use netcat (nc) to send data to the websocket server end on behalf of the client, like so: // $> echo -n "some data that will be echoed by echo.websocket.org" | nc -U test.sock libwsclient_helper_socket(client, "test.sock"); //starts run thread. libwsclient_run(client); //blocks until run thread for client is done. libwsclient_finish(client); return 0; }