summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--assets/board.js5
-rw-r--r--board.html13
-rw-r--r--src/server.c25
-rw-r--r--src/server/base64.c5
4 files changed, 45 insertions, 3 deletions
diff --git a/assets/board.js b/assets/board.js
index c8e2194..9c7b29d 100644
--- a/assets/board.js
+++ b/assets/board.js
@@ -152,7 +152,7 @@ function checkMoveMade(pieceMoved) {
socket.send(old_fen);
}
-window.onload = () => {
+function connectSocket() {
socket = new WebSocket("ws://localhost:3456");
let data = [];
socket.onmessage = e => {
@@ -171,7 +171,10 @@ window.onload = () => {
socket.onerror = e => {
console.log("error", e);
};
+}
+window.onload = () => {
+ connectSocket();
socket.onclose = e => {
console.log("closed", e.code, e.reason);
};
diff --git a/board.html b/board.html
index 2dff608..d7ae9da 100644
--- a/board.html
+++ b/board.html
@@ -72,10 +72,23 @@
pointer-events: none;
background-size: cover;
}
+ button {
+ border: none;
+ padding-left: 1rem;
+ padding-right: 1rem;
+ padding-top: 0.5rem;
+ padding-bottom: 0.5rem;
+ margin-bottom: 2rem;
+ cursor: pointer;
+ }
+ button:hover {
+ opacity: 0.9;
+ }
</style>
<script src="./assets/board.js"></script>
</head>
<body>
+ <button onclick="connectSocket()">Reconnect</button>
<div id="board">
</div>
<div id="output">
diff --git a/src/server.c b/src/server.c
index 80ba5ce..7ff9c87 100644
--- a/src/server.c
+++ b/src/server.c
@@ -10,6 +10,7 @@
#define PORT 3456
+#include "server/base64.c"
#include "server/ws_key.c"
#include "server/comms.c"
@@ -133,10 +134,30 @@ int handle_client(int client) {
}
unsigned char mask[4];
- recv(client, mask, 4, MSG_WAITALL);
+ recvn = recv(client, mask, 4, MSG_WAITALL);
+ if (recvn == -1) {
+ char buf[256];
+ if (strerror_r(errno, buf, sizeof(buf)) == 0) {
+ log_warnf("mask recv err: %s", buf);
+ }
+ } else {
+ char mask_hex[256] = {0};
+ base64_encode(mask, 126, mask_hex);
+ log_infof("mask recv{%d}: %s", recvn, mask_hex);
+ }
unsigned char payload[126];
- recv(client, payload, len, MSG_WAITALL);
+ recvn = recv(client, payload, len, MSG_WAITALL);
+ if (recvn == -1) {
+ char buf[256];
+ if (strerror_r(errno, buf, sizeof(buf)) == 0) {
+ log_warnf("payload recv err: %s", buf);
+ }
+ } else {
+ char payload_hex[256] = {0};
+ base64_encode(payload, 126, payload_hex);
+ log_infof("payload recv{%d}: %s", recvn, payload_hex);
+ }
for (unsigned i = 0; i < len; i++)
payload[i] ^= mask[i % 4];
diff --git a/src/server/base64.c b/src/server/base64.c
index 7e52eb9..e3e0ef6 100644
--- a/src/server/base64.c
+++ b/src/server/base64.c
@@ -1,3 +1,6 @@
+#ifndef BASE64_C
+#define BASE64_C
+
#include <stddef.h>
static const char b64[] =
@@ -27,3 +30,5 @@ void base64_encode(
out[j] = 0;
}
+
+#endif // BASE64_C