annotate seobeo/tests/seobeo_websocket_test.c @ 208:5d3e116dd745

[MrJuneJune] made it more mobile friendly.
author MrJuneJune <me@mrjunejune.com>
date Sun, 15 Feb 2026 12:33:54 -0800
parents cbbf78b17cfa
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
120
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
1 #include "seobeo/seobeo.h"
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
2 #include <stdio.h>
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
3 #include <stdlib.h>
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
4 #include <unistd.h>
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
5
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
6 void Test_WebSocket_Echo()
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
7 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
8 printf("\n=== Test: WebSocket Echo Server ===\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
9
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
10 Seobeo_WebSocket *p_ws = Seobeo_WebSocket_Connect("wss://echo.websocket.org");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
11 if (!p_ws)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
12 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
13 printf("Failed to connect to WebSocket server\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
14 return;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
15 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
16
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
17 printf("Connected to WebSocket server\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
18
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
19 const char *test_message = "Hello, WebSocket!";
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
20 printf("Sending: %s\n", test_message);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
21
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
22 if (Seobeo_WebSocket_Send_Text(p_ws, test_message) < 0)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
23 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
24 printf("Failed to send message\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
25 Seobeo_WebSocket_Destroy(p_ws);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
26 return;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
27 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
28
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
29 printf("Waiting for echo response...\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
30
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
31 int attempts = 0;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
32 while (attempts < 100)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
33 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
34 Seobeo_WebSocket_Message *p_msg = Seobeo_WebSocket_Receive(p_ws);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
35 if (p_msg)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
36 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
37 if (p_msg->opcode == SEOBEO_WS_OPCODE_TEXT)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
38 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
39 printf("Received text: %.*s\n", (int)p_msg->length, (char*)p_msg->data);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
40 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
41 else if (p_msg->opcode == SEOBEO_WS_OPCODE_BINARY)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
42 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
43 printf("Received binary data (%zu bytes)\n", p_msg->length);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
44 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
45
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
46 Seobeo_WebSocket_Message_Destroy(p_msg);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
47 break;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
48 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
49
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
50 usleep(10000);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
51 attempts++;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
52 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
53
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
54 if (attempts >= 100)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
55 printf("Timeout waiting for response\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
56
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
57 Seobeo_WebSocket_Close(p_ws, 1000, "Test complete");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
58 Seobeo_WebSocket_Destroy(p_ws);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
59
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
60 printf("WebSocket test completed\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
61 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
62
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
63 void Test_WebSocket_Multiple_Messages()
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
64 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
65 printf("\n=== Test: Multiple Messages ===\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
66
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
67 Seobeo_WebSocket *p_ws = Seobeo_WebSocket_Connect("wss://echo.websocket.org");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
68 if (!p_ws)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
69 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
70 printf("Failed to connect\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
71 return;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
72 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
73
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
74 const char *messages[] = {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
75 "Message 1",
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
76 "Message 2",
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
77 "Message 3"
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
78 };
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
79
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
80 for (int i = 0; i < 3; i++)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
81 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
82 printf("Sending: %s\n", messages[i]);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
83 Seobeo_WebSocket_Send_Text(p_ws, messages[i]);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
84 usleep(100000);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
85 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
86
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
87 printf("Receiving responses...\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
88 int received = 0;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
89 int attempts = 0;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
90
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
91 while (received < 3 && attempts < 200)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
92 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
93 Seobeo_WebSocket_Message *p_msg = Seobeo_WebSocket_Receive(p_ws);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
94 if (p_msg)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
95 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
96 if (p_msg->opcode == SEOBEO_WS_OPCODE_TEXT)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
97 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
98 printf("Response %d: %.*s\n", received + 1, (int)p_msg->length, (char*)p_msg->data);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
99 received++;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
100 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
101 Seobeo_WebSocket_Message_Destroy(p_msg);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
102 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
103
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
104 usleep(10000);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
105 attempts++;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
106 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
107
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
108 printf("Received %d/%d messages\n", received, 3);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
109
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
110 Seobeo_WebSocket_Destroy(p_ws);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
111 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
112
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
113 void Test_WebSocket_Binary_Data()
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
114 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
115 printf("\n=== Test: Binary Data ===\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
116
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
117 Seobeo_WebSocket *p_ws = Seobeo_WebSocket_Connect("wss://echo.websocket.org");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
118 if (!p_ws)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
119 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
120 printf("Failed to connect\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
121 return;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
122 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
123
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
124 uint8 binary_data[] = {0x01, 0x02, 0x03, 0x04, 0x05, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF};
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
125 printf("Sending %zu bytes of binary data\n", sizeof(binary_data));
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
126
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
127 if (Seobeo_WebSocket_Send_Binary(p_ws, binary_data, sizeof(binary_data)) < 0)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
128 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
129 printf("Failed to send binary data\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
130 Seobeo_WebSocket_Destroy(p_ws);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
131 return;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
132 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
133
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
134 int attempts = 0;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
135 while (attempts < 100)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
136 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
137 Seobeo_WebSocket_Message *p_msg = Seobeo_WebSocket_Receive(p_ws);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
138 if (p_msg)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
139 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
140 if (p_msg->opcode == SEOBEO_WS_OPCODE_BINARY)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
141 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
142 printf("Received %zu bytes of binary data: ", p_msg->length);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
143 for (size_t i = 0; i < p_msg->length && i < 16; i++)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
144 printf("%02X ", p_msg->data[i]);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
145 printf("\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
146 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
147
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
148 Seobeo_WebSocket_Message_Destroy(p_msg);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
149 break;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
150 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
151
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
152 usleep(10000);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
153 attempts++;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
154 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
155
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
156 Seobeo_WebSocket_Destroy(p_ws);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
157 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
158
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
159 void Test_WebSocket_Ping_Pong()
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
160 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
161 printf("\n=== Test: Ping/Pong ===\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
162
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
163 Seobeo_WebSocket *p_ws = Seobeo_WebSocket_Connect("wss://echo.websocket.org");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
164 if (!p_ws)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
165 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
166 printf("Failed to connect\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
167 return;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
168 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
169
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
170 printf("Sending ping...\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
171 if (Seobeo_WebSocket_Send_Ping(p_ws, "ping payload") < 0)
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
172 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
173 printf("Failed to send ping\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
174 Seobeo_WebSocket_Destroy(p_ws);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
175 return;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
176 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
177
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
178 printf("Ping sent (pong should be handled automatically)\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
179
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
180 usleep(500000);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
181
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
182 Seobeo_WebSocket_Destroy(p_ws);
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
183 }
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
184
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
185 int main()
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
186 {
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
187 printf("=== Seobeo WebSocket Tests ===\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
188
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
189 Test_WebSocket_Echo();
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
190 Test_WebSocket_Multiple_Messages();
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
191 Test_WebSocket_Binary_Data();
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
192 Test_WebSocket_Ping_Pong();
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
193
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
194 printf("\n=== All Tests Complete ===\n");
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
195 return 0;
cbbf78b17cfa [Seobeo][Websocket] Created Web socket client logic.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
196 }