noflo-runtime-msgflo
Version:
NoFlo runtime for Node.js over AMQP/MQTT etc
46 lines (36 loc) • 1.14 kB
text/coffeescript
var Base = require 'noflo-runtime-base'
class Transport extends Base
constructor: (options) ->
send: ->
sendAll: ->
module.exports = (options) ->
var runtime = new WebSocketRuntime(options);
var handleMessage = function (message, connection) {
if (message.type == 'utf8') {
var contents;
try {
contents = JSON.parse(message.utf8Data);
} catch (e) {
return;
}
runtime.receive(contents.protocol, contents.command, contents.payload, {
connection: connection
});
}
};
wsServer.on('request', function (request) {
var subProtocol = (request.requestedProtocols.indexOf("noflo") != -1) ? "noflo" : null;
var connection = request.accept(subProtocol, request.origin);
runtime.connections.push(connection);
connection.on('message', function (message) {
handleMessage(message, connection);
});
connection.on('close', function () {
if (runtime.connections.indexOf(connection) === -1) {
return;
}
runtime.connections.splice(runtime.connections.indexOf(connection), 1);
});
});
return runtime;
};