From 36cb2f69f06ef5539af77da6e40a75cc450f9763 Mon Sep 17 00:00:00 2001 From: Leo Vasanko Date: Mon, 16 Jun 2025 19:15:46 -0600 Subject: [PATCH] Add WebSocket test client and server code. --- .gitignore | 24 ++++++++++++ index.html | 1 + server.js | 14 +++++++ src/counter.js | 9 ----- src/javascript.svg | 1 - src/main.js | 32 ++++------------ src/style.css | 96 ---------------------------------------------- vite.config.js | 10 +++++ 8 files changed, 57 insertions(+), 130 deletions(-) create mode 100644 .gitignore create mode 100644 server.js delete mode 100644 src/counter.js delete mode 100644 src/javascript.svg delete mode 100644 src/style.css create mode 100644 vite.config.js diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..a547bf3 --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/index.html b/index.html index 72ba3a8..ea42267 100644 --- a/index.html +++ b/index.html @@ -7,6 +7,7 @@ Vite App + View console for WebSocket messages.
diff --git a/server.js b/server.js new file mode 100644 index 0000000..856a133 --- /dev/null +++ b/server.js @@ -0,0 +1,14 @@ +const http = require('http') +const WebSocket = require('ws') + +const server = http.createServer() +const wss = new WebSocket.Server({ server }) + +wss.on('connection', ws => { + ws.on('message', msg => { + ws.send(`echo ${msg}`) + console.log(`Received: ${msg}`) + }) +}) + +server.listen(8078) diff --git a/src/counter.js b/src/counter.js deleted file mode 100644 index 881e2d7..0000000 --- a/src/counter.js +++ /dev/null @@ -1,9 +0,0 @@ -export function setupCounter(element) { - let counter = 0 - const setCounter = (count) => { - counter = count - element.innerHTML = `count is ${counter}` - } - element.addEventListener('click', () => setCounter(counter + 1)) - setCounter(0) -} diff --git a/src/javascript.svg b/src/javascript.svg deleted file mode 100644 index f9abb2b..0000000 --- a/src/javascript.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/main.js b/src/main.js index 5fc3358..cedd755 100644 --- a/src/main.js +++ b/src/main.js @@ -1,24 +1,8 @@ -import './style.css' -import javascriptLogo from './javascript.svg' -import viteLogo from '/vite.svg' -import { setupCounter } from './counter.js' - -document.querySelector('#app').innerHTML = ` -
- - - - - - -

Hello Vite!

-
- -
-

- Click on the Vite logo to learn more -

-
-` - -setupCounter(document.querySelector('#counter')) +const url = location.origin.replace(/^http/, 'ws') + '/api' +console.log("Connecting WebSocket...", url) +const ws = new WebSocket(url) +ws.onmessage = console.log +ws.onopen = () => { + ws.send('Hello from the client!') +} +ws.onerror = console.error diff --git a/src/style.css b/src/style.css deleted file mode 100644 index 8df73e3..0000000 --- a/src/style.css +++ /dev/null @@ -1,96 +0,0 @@ -:root { - font-family: system-ui, Avenir, Helvetica, Arial, sans-serif; - line-height: 1.5; - font-weight: 400; - - color-scheme: light dark; - color: rgba(255, 255, 255, 0.87); - background-color: #242424; - - font-synthesis: none; - text-rendering: optimizeLegibility; - -webkit-font-smoothing: antialiased; - -moz-osx-font-smoothing: grayscale; -} - -a { - font-weight: 500; - color: #646cff; - text-decoration: inherit; -} -a:hover { - color: #535bf2; -} - -body { - margin: 0; - display: flex; - place-items: center; - min-width: 320px; - min-height: 100vh; -} - -h1 { - font-size: 3.2em; - line-height: 1.1; -} - -#app { - max-width: 1280px; - margin: 0 auto; - padding: 2rem; - text-align: center; -} - -.logo { - height: 6em; - padding: 1.5em; - will-change: filter; - transition: filter 300ms; -} -.logo:hover { - filter: drop-shadow(0 0 2em #646cffaa); -} -.logo.vanilla:hover { - filter: drop-shadow(0 0 2em #f7df1eaa); -} - -.card { - padding: 2em; -} - -.read-the-docs { - color: #888; -} - -button { - border-radius: 8px; - border: 1px solid transparent; - padding: 0.6em 1.2em; - font-size: 1em; - font-weight: 500; - font-family: inherit; - background-color: #1a1a1a; - cursor: pointer; - transition: border-color 0.25s; -} -button:hover { - border-color: #646cff; -} -button:focus, -button:focus-visible { - outline: 4px auto -webkit-focus-ring-color; -} - -@media (prefers-color-scheme: light) { - :root { - color: #213547; - background-color: #ffffff; - } - a:hover { - color: #747bff; - } - button { - background-color: #f9f9f9; - } -} diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 0000000..86dd4c0 --- /dev/null +++ b/vite.config.js @@ -0,0 +1,10 @@ +export default { + server: { + proxy: { + "/api": { + target: `ws://localhost:8078`, + ws: true, + } + } + }, +}