var Stomp = require("./stomp"); var net = require('net'); var wrapTCP = function(port, host) { // node.js net.Socket; var socket; // Web Socket-like object var ws = { url: 'tcp:// ' + host + ':' + port, send: function(d) { socket.write(d); }, close: function() { socket.end(); } }; socket = net.connect(port, host, function(e) { ws.onopen(); }); socket.on('error', function(e) { // handler can be null if the ws is properly closed if (ws.onclose) { ws.onclose(e); } }); socket.on('close', function(e) { // handler can be null if the ws is properly closed if (ws.onclose) { ws.onclose(); } }); socket.on('data', function(data) { // wrap the data in an event object var event = { 'data': data.toString() }; ws.onmessage(event); }); return ws; }; var wrapWS = function(url) { var WebSocketClient = require('websocket').client; var connection; var ws = { url: url, send : function(d) { connection.sendUTF(d); }, close : function() { connection.close(); } }; var socket = new WebSocketClient(); socket.on('connect', function(conn) { connection = conn; ws.onopen(); connection.on('error', function(error) { if (ws.onclose) { ws.onclose(error); } }); connection.on('close', function() { if (ws.onclose) { ws.onclose(); } }); connection.on('message', function(message) { if (message.type === 'utf8') { // wrap the data in an event object var event = { 'data': message.utf8Data }; ws.onmessage(event); } }); }); socket.connect(url); return ws; } var overTCP = function(host, port) { var socket = wrapTCP(port, host); return Stomp.Stomp.over(socket); } var overWS= function(url) { var socket = wrapWS(url); return Stomp.Stomp.over(socket); } exports.overTCP = overTCP; exports.overWS = overWS;