-#!/usr/bin/nodejs
-
-const app = require('http').createServer();
-const io = require('socket.io')(app);
-const ss = require('socket.io-stream');
-const net = require('net');
-const log = require('./../logger')(__filename.slice(__dirname.length + 1));
-
-var lastsocket = null;
-var websocket = null;
-const socketioport = 8087;
-const revproxport = 8089;
-
-app.listen(socketioport, 'localhost');
-log.info('socket.io server bound to port ' + socketioport);
-
-io.on('connection', function (iosocket) {
- lastsocket = iosocket;
- log.info('socket.io client connected');
- iosocket.emit('servereventtest', { data: 'servereventtestdata' });
-
- iosocket.on('disconnect', function () {
- log.info("socket.io client disconnected");
- lastsocket = null;
- })
-
- iosocket.on('clienteventtest', function (data) {
- log.info('socket.io client connection test succeeded');
- });
-
- iosocket.on('destinationerror', function (err) {
- if (websocket != null) {
- log.warn('destination error, closing web socket');
- websocket.end();
- }
- });
-
- iosocket.on('error', function (err) {
- log.error('socket.io error:', JSON.stringify(err));
- });
-});
-
-var server = net.createServer(function(sock) {
- log.info('web client connected');
- websocket = sock;
-
- if (null != lastsocket) {
- var stream = ss.createStream();
- ss(lastsocket).emit('proxy', stream);
- log.debug('stream created');
-
- websocket.on('error', function(err) {
- log.error('web socket error:', JSON.stringify(err));
- })
- .on('data', function(data) {
- log.debug('web socket data, port ' + websocket.remotePort + ', size: ' + data.length);
- })
- .on('end', function() {
- websocket.unpipe(stream);
- stream.unpipe(websocket);
- websocket = null;
- log.info('web client disconnect');
- });
-
- stream.on('error', function() {
- log.error('stream error, id ' + stream.id);
- })
- .on('data', function(data) {
- log.debug('stream data, id ' + stream.id + ', size: ' + data.length);
- })
- .on('end', function() {
- log.debug('stream destroyed');
- });
-
- websocket.pipe(stream);
- stream.pipe(websocket);
- } else {
- log.warn('web client connection refused due to missing socket.io connection');
- websocket.end();
- }
-});
-
-server.listen(revproxport, 'localhost', function() {
- log.info('reverse proxy bound to port ' + revproxport);
-});