UNPKG

noflo-runtime-msgflo

Version:

NoFlo runtime for Node.js over AMQP/MQTT etc

46 lines (36 loc) 1.14 kB
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; };