<!DOCTYPE html> <html lang="en"> <head> <title>Websock VPN Test Client</title> </head> <body ng-app="vpnTest" ng-controller="vpnTestController"> <div class="panel panel-default panel-primary"> <div class="panel-heading">WebSocket Client Test</div> <div class="panel-body"> <div class="panel panel-default panel-info"> <div class="panel-heading">Control Plane</div> <div class="panel-body"> <div class="row"> <!-- Auth --> <div class="col-lg-6"> <div class="input-group"> <span class="input-group-btn"> <button class="btn btn-default" type="button" ng-click="startWebSocket()"> Start WebSocket </button> </span> <button class="btn btn-default" type="button" ng-class="conn == false && 'btn-danger' || 'btn-success'" > {[{ conn == false && 'False' || 'True' }]} </button> </div> </div> </div> <br /> <div class="row"> <div class="col-lg-6"> <div class="input-group"> <span class="input-group-btn"> <button class="btn btn-default" type="button">Auth</button> </span> <input type="text" class="form-control" placeholder="Enter auth data here" /> </div> </div> </div> <br /> <div class="row"> <div class="col-lg-6"> <div class="input-group"> <span class="input-group-btn"> <button class="btn btn-default" ng-click="send_click()" type="button"> Send </button> </span> <input ng-model="send_data" type="text" class="form-control" placeholder="Enter send data here" /> </div> </div> </div> </div> </div> <div class="panel panel-default panel-danger"> <div class="panel-heading">Messages</div> <div class="panel-body"> <p ng-repeat="text in log_elements">{[{text}]}</p> </div> </div> </div> </div> </body> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.3/jquery.min.js"></script> <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.1/angular.min.js"></script> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous" /> <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous" /> <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous" ></script> <script type="text/javascript"> console.log("startup"); var vpnTest = angular.module("vpnTest", []); vpnTest.config(function ($interpolateProvider) { console.log("vpnTest Config"); $interpolateProvider.startSymbol("{[{"); $interpolateProvider.endSymbol("}]}"); }); vpnTest.controller("vpnTestController", function ($scope) { console.log("vpnTestController startup"); $scope.log_elements = []; $scope.auth_key = ""; $scope.conn = false; $scope.send_data = ""; $scope.webSocketStatus = function () { if ($scope.conn == false) { return ""; } }; $scope.startWebSocket = function () { console.log("Start webSocket {{$}}"); if (window["WebSocket"]) { $scope.conn = new WebSocket("wss://{{$}}/ws/client"); $scope.append_log("Websocket opened"); $scope.conn.onclose = function (evt) { $scope.append_log("Connection closed."); }; $scope.conn.onmessage = function (evt) { console.log(evt.data); $scope.append_log(evt.data); }; } else { appendLog($("<div><b>Your browser does not support WebSockets.</b></div>")); } }; $scope.auth_click = function () { $scope.append_log($scope.auth_key); }; $scope.send_click = function () { console.log("send_click"); $scope.conn.send($scope.send_data); }; $scope.append_log = function (txt) { $scope.log_elements.push(txt); }; }); </script> </html>