WebSockets

Exercising the basic WebSocket API.

socket Demo


html
<div style="max-width: 800px; margin: 0 auto; padding: 20px; font-family: monospace;">
  <h1>socket Demo</h1>
  <button id="run-connect">Connect</button>
  <button id="run-send">Send</button>
  <pre id="message-container" style="background: #f4f4f4; padding: 15px; margin-top: 20px; height: 500px; overflow: auto; border: 1px solid #ddd;"></pre>
</div>
js
import { createAuthClient } from './client.js';

async function runClient() {
    // In a real app, keys would be securely generated and stored
    const keys = {
        publicKey: 'client-public-key-1',
        privateKey: 'client-private-key-1'
    };

    const socketUrl = window.location.toString().replace(/^http/, 'ws').split('#')[0];
    // Create and configure client
    const client = createAuthClient(socketUrl, keys);

    // Connect and authenticate
    try {
        await client.connect();
        logMessage('Connected to server');

        // Start authentication
        client.authenticate();

        // Listen for authentication result
        client.onStateChange((newState) => {
            if (newState === 'AUTHENTICATED') {
                logMessage('Successfully authenticated!');
                // Now you can send authenticated messages
            } else if (newState === 'REJECTED') {
                logMessage('Authentication rejected');
            }
        });
    } catch (error) {
        logMessage('Connection failed:', error);
    }
}

/**
 * Helper function to log messages to the UI
 */
function logMessage(message, ex) {
    const messageContainer = document.getElementById('message-container');
    if (messageContainer) {
        const messageElement = document.createElement('div');
        messageElement.textContent = message;
        messageContainer.appendChild(messageElement);
    }
    console.log(message, ex);
}

// Add event listener
document.getElementById('run-connect').addEventListener('click', websocketConnect);
document.getElementById('run-send').addEventListener('click', websocketSend);
js
/// DO NOT RUN Server-side example (Node.js)
// server-main.js
import { createAuthServer } from './server.js';

async function runServer() {
    // Create and start server
    const server = createAuthServer({ port: 3000 });
    server.start();

    console.log('Server running. Press Ctrl+C to stop.');
}

© 2026 simpatico