<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>XBMC Websockets</title>
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
</head>
<body>
<script language="javascript" type="text/javascript">
var ws = new WebSocket('ws://127.0.0.1:20111/jsonrpc');
ws.onopen = function (event) {
send_message("Player.GetActivePlayers");
}
ws.onmessage = function (event) {
var j = JSON.parse(event.data);
if (j.id) // response
{
switch(j.id) {
case "Player.GetActivePlayers":
var r = j.result[0];
if (r.type == 'video') {
send_message("Player.GetItem", {
"properties": ["file", "streamdetails"],
"playerid": r.playerid,
});
}
break;
case "Player.GetItem":
//alert(event.data);
var r = j.result.item;
document.getElementById("name").innerHTML = r.label;
document.getElementById("file").innerHTML = r.file;
var v = r.streamdetails.video[0];
document.getElementById("details").innerHTML = v.width + 'x' + v.height + ', ' + v.duration + 's';
break;
default:
//alert(event.data);
}
}
else // notification
{
switch(j.method) {
case "Player.OnPlay":
send_message("Player.GetActivePlayers");
break;
case "Player.OnStop":
document.getElementById("name").innerHTML = "VIDEO PLAYER STOPPED";
document.getElementById("file").innerHTML = "";
document.getElementById("details").innerHTML = "";
break;
default:
//alert(event.data);
}
}
}
function send_message(method, params) {
var msg = {
"jsonrpc": "2.0",
"method": method,
"id": method
};
if (params) {
msg.params = params;
}
ws.send(JSON.stringify(msg));
}
</script>
<div id="name"></div>
<div id="file"></div>
<div id="details"></div>
</body>
</html>