You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

56 lines
1.5 KiB

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <errno.h>
#include <wsclient/wsclient.h>
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;
}