diff options
-rw-r--r-- | module/obmc/wsgi/examples/websockets/client_simple.html | 59 |
1 files changed, 59 insertions, 0 deletions
diff --git a/module/obmc/wsgi/examples/websockets/client_simple.html b/module/obmc/wsgi/examples/websockets/client_simple.html new file mode 100644 index 0000000..7d75035 --- /dev/null +++ b/module/obmc/wsgi/examples/websockets/client_simple.html @@ -0,0 +1,59 @@ +<!DOCTYPE html> +<html> +<head> + <script type="text/javascript"> + // This simple example subscribes, via websocket, to certain events occuring + // on the BMC. Specfically, it's interested in an d-bus events (object + // creations, property changes), occuring in the d-bus namespaces + // /xyz/openbmc_project/logging and /xyz/openbmc_project/sensors. It's also + // interested in the interfaces xyz.openbmc_project.Logging.Entry and + // xyz.openbmc_project.Sensor.Value being added, or property changes to + // these interfaces. + + + // Insert code here to log-on to the BMC. At the moment of writing this + // example, I don't know how to do that in javascript (I had disabled the + // the authorization plug-in in rest_dbus.py to test this example). See + // https://github.com/openbmc/docs/blob/master/rest-api.md for the log-on + // API. + + // Open a new secure websocket. The rest server on the BMC + // only supports the /subscribe route with websockets as of now. + var ws = new WebSocket("wss://<BMC IP>/subscribe"); + // Send in array of d-bus paths and interfaces of interest over the + // websocket. Either/both of them can be an empty array. The arrays + // need to be sent in a JSON dictionary. + // Client will be notified of events occuring on these paths and/or + // interfaces. + var data = JSON.stringify( + { + "paths": ["/xyz/openbmc_project/logging", + "/xyz/openbmc_project/sensors"], + "interfaces": ["xyz.openbmc_project.Logging.Entry", + "xyz.openbmc_project.Sensor.Value"] + }); + ws.onopen = function() { + // Send the JSON dictionary + ws.send(data); + }; + ws.onmessage = function (evt) { + // Received a message on the websocket, the response is a JSON dict. + var response = JSON.parse(evt.data); + for (var key in response) { + if (response.hasOwnProperty(key)) { + var value = response[key]; + if ("path" == key) { + // If the d-bus path is in the response, let's do a GET on + // that path. + var xhr = new XMLHttpRequest(); + var url = "https://<BMC IP>" + value; + xhr.open("GET", url, true); + xhr.setRequestHeader("Content-type", "application/json"); + xhr.send(); + } + } + } + }; + </script> +</head> +</html> |