You are on page 1of 4

<html>

<head>
    <title>WebSocket</title>
    <style type="text/css">
        html,
        body {
            font: normal 0.9em arial, helvetica;
        }

        #log {
            width: 600px;
            height: 300px;
            border: 1px solid #7F9DB9;
            overflow: auto;
        }

        #msg {
            width: 400px;
        }
    </style>
    <script type="text/javascript">
        var socket;

        function init() {
            var host = "ws://localhost:9000";
            try {
                socket = new WebSocket(host);
                log('WebSocket - status ' + socket.readyState);
                socket.onopen = function (msg) {
                    log("Welcome - status " + this.readyState);
                };
                socket.onmessage = function (msg) {
                    var data = JSON.parse(msg.data)
                    var username = data.username;
                    var message = data.message;
                    log(`-${username}: ${message}`);
                };
                socket.onclose = function (msg) {
                    log("Disconnected - status " + this.readyState);
                };
            }
            catch (ex) {
                log(ex);
            }
            $("msg").focus();
        }

        function send() {
            var username, message;
            username = $("username").value;
            message = $("msg").value;

            if (!message) {
                alert("Message can not be empty");
                return;
            }
            if (!username) {
                alert("Username can not be empty");
                return;
            }
            $("msg").value = "";
            $("msg").focus();
            try {
                var payload = { username, message }
                socket.send(JSON.stringify(payload));
                log(`${username}: ${message}`);
            } catch (ex) {
                log(ex);
            }
        }
        function quit() {
            if (socket != null) {
                log("Goodbye!");
                socket.close();
                socket = null;
            }
        }

        function reconnect() {
            quit();
            init();
        }

        // Utilities
        function $(id) { return document.getElementById(id); }
        function log(msg) { $("log").innerHTML += "<br>" + msg; }
    </script>

</head>
<body onload="init()">
    <h3>WebSocket v2.00</h3>
    <div id="log"></div>
    <label>
        <p>Apodo: <input id="username" type="text" /></p>
    </label>
    <br>
    <input id="msg" type="textbox" />
    <button onclick="send()">Send</button>
    <button onclick="quit()">Quit</button>
    <button onclick="reconnect()">Reconnect</button>
</body>

</html>

You might also like