"use strict";
var fluid = require("infusion");
var gpii = fluid.registerNamespace("gpii");
fluid.registerNamespace("gpii.flowManager");
fluid.defaults("gpii.flowManager.browserChannel", {
gradeNames: ["fluid.modelComponent"]
});
fluid.defaults("gpii.flowManager.browserChannel.handler", {
gradeNames: ["kettle.request.ws", "gpii.flowManager.sessionAware"],
listeners: {
onReceiveMessage: {
funcName: "gpii.flowManager.browserChannel.receiveMessage",
args: ["{that}",
"{arguments}.1",
"{flowManager}.solutionsRegistryDataSource",
"{deviceReporter}.platformReporter"]
}
}
});
gpii.flowManager.browserChannel.sendError = function (request, message) {
fluid.log("Sending browserChannel error ", message);
var error = {
isError: true,
message: message
};
request.sendMessage(error);
// These codes bizarrely are not HTTP codes, but listed here: https://developer.mozilla.org/en-US/docs/Web/API/CloseEvent
request.ws.close(1008, "Solution id not authorized");
};
gpii.flowManager.browserChannel.receiveMessage = function (that, message, solutionsRegistryDataSource, platformReporter) {
var solutionId = message.payload.solutionId;
Iif (that.established) {
gpii.flowManager.browserChannel.sendError(that, "Connection already established - cannot send a second connect message");
}
solutionsRegistryDataSource.get({os: platformReporter.reportPlatform().id}, function onSuccess(entries) {
if (!(solutionId in entries)) {
gpii.flowManager.browserChannel.sendError(that, "Rejecting a connection request from '" + solutionId +
"'. The solution id was not found in the solutions registry");
} else {
gpii.settingsHandlers.webSockets.instance.addClient(solutionId, that);
that.established = true;
}
}, function (error) {
gpii.flowManager.browserChannel.sendError(that, error.message);
});
};
|