<!DOCTYPE html>
<html>
<head>
    <title>Socket.io with JWTs</title>
</head>
<body>
    <form id="login">
        <input type="text" id="username" value="john" />
        <input type="password" id="password" value="aaa" />
        <input type="submit" value="login">
    </form>

    <div>
        <button id="ping">Send Socket.io Ping</button>
    </div>

    <script src="//code.jquery.com/jquery-1.10.1.min.js"></script>
    <script src="/socket.io/socket.io.js"></script>

    <script>
        var token, socket;

        function connect () {
          socket = io.connect(token ? ('?token=' + token) : '', {
            'forceNew': true
          });

          socket.on('pong', function () {
            console.log('- pong');
          }).on('time', function (data) {
            console.log('- broadcast: ' + data);
          }).on('authenticated', function () {
            console.log('- authenticated');
          }).on('disconnect', function () {
            console.log('- disconnected');
          });
        }

        connect(); //connect now, it will drop

        $('#ping').on('click', function () {
            console.log('- ping');
            socket.emit('ping');
        });

        $('#login').submit(function (e) {
            e.preventDefault();
            var username = $('#username').val();
            var password = $('#password').val();
            $.ajax({
                type: 'POST',
                data: {
                    username: username,
                    password: password
                },
                url: '/login'
            }).done(function (result) {
                token = result.token;
                connect();
            });
        });
    </script>
</body>
</html>