-
Notifications
You must be signed in to change notification settings - Fork 73
/
test.c
55 lines (48 loc) · 1.5 KB
/
test.c
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#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;
}