mirror of https://github.com/Freeboard/plugins.git
commit
08ca8d9de4
|
@ -12,24 +12,19 @@
|
||||||
|
|
||||||
var nodeJSDatasource = function(settings, updateCallback) {
|
var nodeJSDatasource = function(settings, updateCallback) {
|
||||||
|
|
||||||
var self = this;
|
var self = this,
|
||||||
var currentSettings = settings;
|
currentSettings = settings,
|
||||||
var url;
|
url,
|
||||||
var socket;
|
socket,
|
||||||
var newMessageCallback;
|
newMessageCallback;
|
||||||
|
|
||||||
function onNewMessageHandler(message) {
|
function onNewMessageHandler(message) {
|
||||||
|
|
||||||
console.debug("Message received %s", message);
|
|
||||||
|
|
||||||
var objdata = JSON.parse(message);
|
var objdata = JSON.parse(message);
|
||||||
|
|
||||||
if (typeof objdata == "object") {
|
if (typeof objdata == "object") {
|
||||||
updateCallback(objdata);
|
updateCallback(objdata);
|
||||||
} else {
|
} else {
|
||||||
updateCallback(data);
|
updateCallback(data);
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function joinRoom(roomName, roomEvent) {
|
function joinRoom(roomName, roomEvent) {
|
||||||
|
@ -39,15 +34,22 @@
|
||||||
console.info("Joining room '%s' with event '%s'", roomName, roomEvent);
|
console.info("Joining room '%s' with event '%s'", roomName, roomEvent);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function discardSocket() {
|
||||||
|
// Disconnect datasource websocket
|
||||||
|
if (self.socket) {
|
||||||
|
self.socket.disconnect();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
function connectToServer(url, rooms) {
|
function connectToServer(url, rooms) {
|
||||||
// Establish connection with server
|
// Establish connection with server
|
||||||
self.url = url;
|
self.url = url;
|
||||||
self.socket = io.connect(self.url);
|
self.socket = io.connect(self.url,{'forceNew':true});
|
||||||
|
|
||||||
// Join the rooms
|
// Join the rooms
|
||||||
self.socket.on('connect', function() {
|
self.socket.on('connect', function() {
|
||||||
|
|
||||||
console.info("Connecting to Node.js at: %s", self.url);
|
console.info("Connecting to Node.js at: %s", self.url);
|
||||||
|
});
|
||||||
|
|
||||||
// Join the rooms
|
// Join the rooms
|
||||||
_.each(rooms, function(roomConfig) {
|
_.each(rooms, function(roomConfig) {
|
||||||
|
@ -59,7 +61,6 @@
|
||||||
}
|
}
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
|
||||||
|
|
||||||
self.socket.on('connect_error', function(object) {
|
self.socket.on('connect_error', function(object) {
|
||||||
console.error("It was not possible to connect to Node.js at: %s", self.url);
|
console.error("It was not possible to connect to Node.js at: %s", self.url);
|
||||||
|
@ -70,38 +71,30 @@
|
||||||
});
|
});
|
||||||
|
|
||||||
self.socket.on('reconnect_failed', function(object) {
|
self.socket.on('reconnect_failed', function(object) {
|
||||||
console.error("Stopping re-connecting to Node.js at: %s", self.url);
|
console.error("Re-connection to Node.js failed at: %s", self.url);
|
||||||
|
discardSocket();
|
||||||
});
|
});
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function disconnecFromServer() {
|
|
||||||
// Disconnect any older socket
|
|
||||||
if (self.socket) {
|
|
||||||
self.socket.disconnect();
|
|
||||||
console.info("Disconnected from Node.js: %s", self.url);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
function initializeDataSource() {
|
function initializeDataSource() {
|
||||||
|
|
||||||
console.info("Subscribing to event: %s", currentSettings.eventName);
|
|
||||||
|
|
||||||
// Reset connection to server
|
// Reset connection to server
|
||||||
disconnecFromServer();
|
discardSocket();
|
||||||
connectToServer(currentSettings.url, currentSettings.rooms);
|
connectToServer(currentSettings.url, currentSettings.rooms);
|
||||||
|
|
||||||
// Subscribe to the events
|
// Subscribe to the events
|
||||||
var newEventName = currentSettings.eventName;
|
var newEventName = currentSettings.eventName;
|
||||||
self.newMessageCallback = onNewMessageHandler;
|
self.newMessageCallback = onNewMessageHandler;
|
||||||
self.socket.on(newEventName, function(message) {
|
_.each(currentSettings.events, function(eventConfig) {
|
||||||
|
var event = eventConfig.eventName;
|
||||||
|
console.info("Subscribing to event: %s", event);
|
||||||
|
self.socket.on(event, function(message) {
|
||||||
self.newMessageCallback(message);
|
self.newMessageCallback(message);
|
||||||
});
|
});
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
initializeDataSource();
|
|
||||||
|
|
||||||
this.updateNow = function() {
|
this.updateNow = function() {
|
||||||
// Just seat back, relax and wait for incoming events
|
// Just seat back, relax and wait for incoming events
|
||||||
return;
|
return;
|
||||||
|
@ -112,12 +105,15 @@
|
||||||
self.newMessageCallback = function(message) {
|
self.newMessageCallback = function(message) {
|
||||||
return;
|
return;
|
||||||
};
|
};
|
||||||
|
discardSocket();
|
||||||
};
|
};
|
||||||
|
|
||||||
this.onSettingsChanged = function(newSettings) {
|
this.onSettingsChanged = function(newSettings) {
|
||||||
currentSettings = newSettings;
|
currentSettings = newSettings;
|
||||||
initializeDataSource();
|
initializeDataSource();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
initializeDataSource();
|
||||||
};
|
};
|
||||||
|
|
||||||
freeboard
|
freeboard
|
||||||
|
@ -134,10 +130,15 @@
|
||||||
type : "text"
|
type : "text"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name : "eventName",
|
name : "events",
|
||||||
display_name : "Events",
|
display_name : "Events",
|
||||||
description : "The name of the events you want this datasource to subscribe to.",
|
description : "The name of the events you want this datasource to subscribe to.",
|
||||||
|
type : "array",
|
||||||
|
settings : [ {
|
||||||
|
name : "eventName",
|
||||||
|
display_name : "Event",
|
||||||
type : "text"
|
type : "text"
|
||||||
|
} ]
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name : "rooms",
|
name : "rooms",
|
||||||
|
|
|
@ -106,12 +106,16 @@
|
||||||
"type": "node_js",
|
"type": "node_js",
|
||||||
"settings": {
|
"settings": {
|
||||||
"url": "http://localhost:8989/shows",
|
"url": "http://localhost:8989/shows",
|
||||||
"eventName": "house.stark.jon",
|
|
||||||
"rooms": [
|
"rooms": [
|
||||||
{
|
{
|
||||||
"roomName": "got",
|
"roomName": "got",
|
||||||
"roomEvent": "subscribe"
|
"roomEvent": "subscribe"
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"eventName": "house.stark.jon"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
@ -120,12 +124,16 @@
|
||||||
"type": "node_js",
|
"type": "node_js",
|
||||||
"settings": {
|
"settings": {
|
||||||
"url": "http://localhost:8989/shows",
|
"url": "http://localhost:8989/shows",
|
||||||
"eventName": "house.lannister.tyrion",
|
|
||||||
"rooms": [
|
"rooms": [
|
||||||
{
|
{
|
||||||
"roomName": "got",
|
"roomName": "got",
|
||||||
"roomEvent": "subscribe"
|
"roomEvent": "subscribe"
|
||||||
}
|
}
|
||||||
|
],
|
||||||
|
"events": [
|
||||||
|
{
|
||||||
|
"eventName": "house.lannister.tyrion"
|
||||||
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue