mirror of https://github.com/Freeboard/plugins.git
commit
c0328ccf50
|
@ -0,0 +1,86 @@
|
|||
(function()
|
||||
{
|
||||
var jsonWebSocketDatasource = function(settings, updateCallback)
|
||||
{
|
||||
var self = this;
|
||||
var currentSettings = settings;
|
||||
var ws;
|
||||
|
||||
var onOpen=function()
|
||||
{
|
||||
console.info("WebSocket(%s) Opened",currentSettings.url);
|
||||
}
|
||||
|
||||
var onClose=function()
|
||||
{
|
||||
console.info("WebSocket Closed");
|
||||
}
|
||||
|
||||
var onMessage=function(event)
|
||||
{
|
||||
var data=event.data;
|
||||
|
||||
console.info("WebSocket received %s",data);
|
||||
|
||||
var objdata=JSON.parse(data);
|
||||
|
||||
if(typeof objdata == "object")
|
||||
{
|
||||
updateCallback(objdata);
|
||||
}
|
||||
else
|
||||
{
|
||||
updateCallback(data);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
function createWebSocket()
|
||||
{
|
||||
if(ws) ws.close();
|
||||
|
||||
var url=currentSettings.url;
|
||||
ws=new WebSocket(url);
|
||||
|
||||
ws.onopen=onOpen;
|
||||
ws.onclose=onClose;
|
||||
ws.onmessage=onMessage;
|
||||
}
|
||||
|
||||
createWebSocket();
|
||||
|
||||
this.updateNow = function()
|
||||
{
|
||||
createWebSocket();
|
||||
}
|
||||
|
||||
this.onDispose = function()
|
||||
{
|
||||
ws.close();
|
||||
}
|
||||
|
||||
this.onSettingsChanged = function(newSettings)
|
||||
{
|
||||
currentSettings = newSettings;
|
||||
|
||||
createWebSocket();
|
||||
}
|
||||
};
|
||||
|
||||
freeboard.loadDatasourcePlugin({
|
||||
type_name : "JSON WebSocket",
|
||||
display_name : "JSON WebSocket Push Datasource",
|
||||
description : "A push datasource based on browser built-in WebSocket implementation, <em>by Lorenzo Maiorfi - <a href=\"http://www.innovactive.it\">Innovactive Engineering s.r.l.</a></em> You can download a sample dashboard using this datasource <a href=\"https://dl.dropboxusercontent.com/u/7414592/dashboard_demo_1.json\">here</a>",
|
||||
settings : [
|
||||
{
|
||||
name : "url",
|
||||
display_name: "URL",
|
||||
type : "text"
|
||||
}
|
||||
],
|
||||
newInstance: function(settings, newInstanceCallback, updateCallback)
|
||||
{
|
||||
newInstanceCallback( new jsonWebSocketDatasource(settings, updateCallback));
|
||||
}
|
||||
});
|
||||
}());
|
Loading…
Reference in New Issue