UNPKG

blackcatmq

Version:

simple STOMP messages broker (aka STOMP server) in node.js

58 lines (45 loc) 1.57 kB
var ws = require('websocket'); var http = require('http'); var util = require('util'); function createServer(broker, callbacks) { var server = http.createServer(); var wsServer = new ws.server({ httpServer: server, autoAcceptConnections: true }); wsServer.on('connect', function (webSocket) { var socket = webSocket.socket; var remoteAddress = webSocket.socket.address(); util.log(util.format('websocket established to %s:%s', remoteAddress.address, remoteAddress.port)); webSocket.on('message', function (message) { callbacks.debugDump(message.utf8Data); callbacks.frameReceived(webSocket, message.utf8Data); }); webSocket.on('close', function() { util.log(util.format('websocket to %s:%s terminated', remoteAddress.address, remoteAddress.port)); callbacks.disconnected(webSocket); }.bind(this)); }.bind(this)); wsServer.listen = function() { const server = this.config.httpServer[0]; return server.listen.apply(server, arguments); } wsServer.address = function() { const tokens = this.config.httpServer[0]._connectionKey.split(':') return { port: tokens[2], family: 'IPv'+tokens[0], address: tokens[1] } } return wsServer; } function sendMessage(socket, data) { if(data) { socket.sendUTF(data); } } module.exports = { createServer: createServer, sendMessage: sendMessage }