diff --git a/README.md b/README.md index f750adf..e411238 100644 --- a/README.md +++ b/README.md @@ -18,11 +18,12 @@ You can send raw text to the WS server. This text is in form of commands: - `MSG {token} {message}` will set the message and broadcast it to all logged-in clients; - `CLEAR {token}` will clear the current message. -You may receive one of two packets while using the server: +You may receive one of three responses while using the server: - `MSG {message}` to indicate there's a new message. The client should react by showing an alert with the message. If no message is present, the packet will be `MSG` only. In this case, the client shouldn't react. - `OK` indicates the action was successful. The client should react by showing an alert telling the user so. +- `NULL` to indicate that no data is available. No client reaction is intended. ## Frontend -The frontend is a static HTML page and can be hosted on anything. \ No newline at end of file +The frontend is a static HTML page and can be hosted on anything. diff --git a/front/index.html b/front/index.html index 24ca5e7..154e3e6 100644 --- a/front/index.html +++ b/front/index.html @@ -3,7 +3,7 @@ - HTML 5 Boilerplate + Vencord EAS @@ -19,31 +19,27 @@

Vencord EAS Client

arrow_drop_down
- +
- +
-
-
- - -
- +
Logs
+

+ - \ No newline at end of file + diff --git a/front/index.js b/front/index.js new file mode 100644 index 0000000..10ecfa0 --- /dev/null +++ b/front/index.js @@ -0,0 +1,42 @@ +const socket = new WebSocket('wss://eas-ws.nin0.dev'); + +socket.onopen = function(event) { + log("Connection opened") +}; + +socket.onmessage = function(event) { + log("IN: " + event.data) + if(event.data.startsWith("MSG ")) { + alert(event.data.replace("MSG ", "")) + } +}; + +socket.onclose = function(event) { + alert("Connection has been closed, refresh the page."); +}; + +function sendMessage(message) { + socket.send(message); + log("OUT: " + message) +} + +function log(message) { + const logArea = document.getElementById("log"); + const newVal = message + "
" + logArea.innerHTML; + logArea.innerHTML = newVal; +} + +function processSend() { + const endpoint = document.getElementById("endpoint").value + if(endpoint == "get") { + sendMessage("GET") + } + const token = document.getElementById("token").value + const msg = document.getElementById("msg").value + if(endpoint == "msg") { + sendMessage(`MSG ${token} ${msg}`) + } + if(endpoint == "clear") { + sendMessage(`CLEAR ${token}`) + } +} diff --git a/main.py b/main.py index 31df4c6..a4e044c 100644 --- a/main.py +++ b/main.py @@ -18,12 +18,15 @@ async def handle(websocket): CONNECTIONS.add(websocket) async for message in websocket: if message == "GET": + if EAS_MESSAGE == "": + await websocket.send("NULL") + return await websocket.send(f"MSG {EAS_MESSAGE}") if message.startswith(f"MSG {TOKEN} "): # broadcast from vee EAS_MESSAGE = message.replace(f"MSG {TOKEN} ", "") websockets.broadcast(CONNECTIONS, f"MSG {EAS_MESSAGE}") - if message.startswith(f"CLEAR {TOKEN} "): + if message.startswith(f"CLEAR {TOKEN}"): # clear EAS_MESSAGE = "" await websocket.send(f"OK")