示例#1
0
/*
 * @author https://github.com/zz85
 */

"use strict";

var websockets_port = 20143;
// Start contact.js Websocket Server

var WebSocketServer = require('ws').Server,
	wss = new WebSocketServer({port: websockets_port});

var fs = require('fs')
var connections = [];
var receivers = [];
var transmitters = [];

var captures = []; // Captured emotions
var CAPTURES_FILE = 'captures.json';

var TYPE_RECEIVER = 'receiver', // Canvas App
	TYPE_TRANSMITTER = 'transmitter'; // Emo App

// Recover data after restart
try {
	var json = fs.readFileSync(CAPTURES_FILE, 'utf8');
	captures = JSON.parse(json);
} catch (e) {

}
示例#2
0
 req.on('data', function (data) {
   wsServerThermal.broadcast(data, { binary: true });
 });
示例#3
0
var server = require('http').createServer()
  , url = require('url')
  , WebSocketServer = require('ws').Server
  , wss = new WebSocketServer({ server: server })
  , express = require('express')
  , app = express()
  , port = 4081;
 
app.use(function (req, res) {
  res.send({ msg: "hello" });
});
 
wss.on('connection', function connection(ws) {
  var location = url.parse(ws.upgradeReq.url, true);

  ws.on('message', function incoming(message) {
    console.log('received: %s', message);
  });
 
  ws.send('something from server 192.168.0.252:4081');
});
 
server.on('request', app);
server.listen({port: port, host: '192.168.0.252'}, function (
  ) { console.log('Listening on ' + server.address().port) });

示例#4
0
second quaternion:
Aligned and adjusted Quaternion of the wearable body tracker, it is placed on upper human body
 */
var clientQuaternions;
function crateSerialPortData(array) {
	var buf = new Buffer(4);
	buf[0] = 0xFF;
	for (var i = 1; i < buf.length; i++) {
		buf[i] = array[i - 1];
	};
	return buf;
}
var arduinoPort;

var WebSocketServer = require('ws').Server, wss = new WebSocketServer({
		port : 8089
	});
wss.on('connection', function (ws) {
	ws.on('message', function (message) {
		try {
			clientQuaternions = getQuaternionsFromBuffer(message);
		} catch (e) {
			console.log(e);
		}
		if (clientQuaternions.length === 2) {
			//set the two quaternion to the OrientationProcessor module
			controls.setCameraWorldQuaternion(clientQuaternions[0]);
			controls.setBodyWorldQuaternion(clientQuaternions[1]);
		} else {
			console.log("Unknown format from Websocket. Expect two quaternions");
		}
示例#5
0
文件: server.js 项目: king-king/ws
/**
 * Created by WQ on 2015/5/27.
 */
var http = require( 'http' );
var httpServer = http.createServer( function ( req, res ) {
	console.log( "http connect" );
	res.writeHead( 200, {'Content-Type' : 'text/plain'} );
	res.end( 'var a=23' );
} );
httpServer.listen( 8383 );

var WebSocketServer = require( 'ws' ).Server,
	wss = new WebSocketServer( {
		server : httpServer
	} );

wss.on( 'connection', function connection( ws ) {
	console.log( "ws connect" );
	ws.on( 'message', function incoming( message ) {
		console.log( 'received: %s', message );
	} );
	ws.send( 'something' );
} );
示例#6
0
      error: err
    });
  });
}

// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
  res.status(err.status || 500);
  res.render('error', {
    message: err.message,
    error: {}
  });
});

var WebSocketServer = require('ws').Server, wss = new WebSocketServer({port: 8080});

console.log('Websocket server started on 8080');

var rabbit = {x:0, y:0};


var players = {};

wss.on('connection', function(ws) {
  ws.on('message', function(message) {
    var incommingMsg = JSON.parse(message);
    players[incommingMsg.uuid] = {x: incommingMsg.x, y: incommingMsg.y};
    for(var i in wss.clients) {
      wss.clients[i].send(JSON.stringify(players));
    }
示例#7
0
 ws.on('message', function(message) {
     // Broadcast any received message to all clients
     wss.broadcast(message);
 });
示例#8
0
 bws.on('pong', () => {
   bws.close()
   wss.close(done)
 })
示例#9
0
 bws.on('error', (err) => {
   assert.equal(err.event, 'auth')
   bws.close()
   wss.close(done)
 })
示例#10
0
 bws.once('unsubscribed', (data) => {
   assert.equal(data.status, 'OK')
   assert.equal(data.chanId, channelId)
   bws.close()
   wss.close(done)
 })
示例#11
0
 bws.on('subscribed', (data) => {
   assert.equal(data.channel, 'trades')
   assert.equal(data.pair, 'BTCUSD')
   bws.close()
   wss.close(done)
 })
示例#12
0
文件: index.js 项目: Chanmoro/linebot
    response.json({ status: http.STATUS_CODES[200] });
});
app.use('/', router);

app.use(function(request, response, next) {
    response.status(404);
    response.json({ status: http.STATUS_CODES[404] });
});

var server = http.createServer(app)
server.listen(port)

logger.info("http server listening on %d", port)

// WebSocket server setting
var wss = new WebSocketServer({ server: server, path: '/ws' })
var ws_connections = [];

wss.on("connection", function(ws) {
    var location = url.parse(ws.upgradeReq.url, true);
    logger.info(location);
    logger.info(ws.upgradeReq.headers);
    ws_connections.push(ws);

    logger.info("websocket connection open");

    ws.on('message', function(data) {
        var obj = JSON.parse(data);
        logger.info("received message");
        logger.info(obj);
        sendResponse(obj);
示例#13
0
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({ port: parseInt(process.argv[2]) });

wss.on('connection', function connection(ws) {
  ws.on('message', function incoming(message, flags) {
  	ws.send(message, flags);
  });
});
示例#14
0
/**
 * Attaches a WebSocket based connection to the Packager to expose
 * Hot Module Replacement updates to the simulator.
 */
function attachHMRServer({httpServer, path, packagerServer}) {
  let client = null;

  function disconnect() {
    client = null;
    packagerServer.setHMRFileChangeListener(null);
  }

  // For the give platform and entry file, returns a promise with:
  //   - The full list of dependencies.
  //   - The shallow dependencies each file on the dependency list has
  //   - Inverse shallow dependencies map
  function getDependencies(platform, bundleEntry) {
    return packagerServer.getDependencies({
      platform: platform,
      dev: true,
      entryFile: bundleEntry,
    }).then(response => {
      // for each dependency builds the object:
      // `{path: '/a/b/c.js', deps: ['modA', 'modB', ...]}`
      return Promise.all(Object.values(response.dependencies).map(dep => {
        return dep.getName().then(depName => {
          if (dep.isAsset() || dep.isAsset_DEPRECATED() || dep.isJSON()) {
            return Promise.resolve({path: dep.path, deps: []});
          }
          return packagerServer.getShallowDependencies(dep.path)
            .then(deps => {
              return {
                path: dep.path,
                name: depName,
                deps,
              };
            });
        });
      }))
      .then(deps => {
        // list with all the dependencies' filenames the bundle entry has
        const dependenciesCache = response.dependencies.map(dep => dep.path);

        // map from module name to path
        const moduleToFilenameCache = Object.create(null);
        deps.forEach(dep => moduleToFilenameCache[dep.name] = dep.path);

        // map that indicates the shallow dependency each file included on the
        // bundle has
        const shallowDependencies = Object.create(null);
        deps.forEach(dep => shallowDependencies[dep.path] = dep.deps);

        // map from module name to the modules' dependencies the bundle entry
        // has
        const dependenciesModulesCache = Object.create(null);
        return Promise.all(response.dependencies.map(dep => {
          return dep.getName().then(depName => {
            dependenciesModulesCache[depName] = dep;
          });
        })).then(() => {
          return getInverseDependencies(response)
            .then(inverseDependenciesCache => {
              return {
                dependenciesCache,
                dependenciesModulesCache,
                shallowDependencies,
                inverseDependenciesCache,
                resolutionResponse: response,
              };
            });
        });
      });
    });
  }

  const WebSocketServer = require('ws').Server;
  const wss = new WebSocketServer({
    server: httpServer,
    path: path,
  });

  console.log('[Hot Module Replacement] Server listening on', path);
  wss.on('connection', ws => {
    console.log('[Hot Module Replacement] Client connected');
    const params = querystring.parse(url.parse(ws.upgradeReq.url).query);

    getDependencies(params.platform, params.bundleEntry)
      .then(({
        dependenciesCache,
        dependenciesModulesCache,
        shallowDependencies,
        inverseDependenciesCache,
      }) => {
        client = {
          ws,
          platform: params.platform,
          bundleEntry: params.bundleEntry,
          dependenciesCache,
          dependenciesModulesCache,
          shallowDependencies,
          inverseDependenciesCache,
        };

        packagerServer.setHMRFileChangeListener((filename, stat) => {
          if (!client) {
            return;
          }
          console.log(
            `[Hot Module Replacement] File change detected (${time()})`
          );

          client.ws.send(JSON.stringify({type: 'update-start'}));
          stat.then(() => {
            return packagerServer.getShallowDependencies(filename)
              .then(deps => {
                if (!client) {
                  return [];
                }

                // if the file dependencies have change we need to invalidate the
                // dependencies caches because the list of files we need to send
                // to the client may have changed
                const oldDependencies = client.shallowDependencies[filename];
                if (arrayEquals(deps, oldDependencies)) {
                  // Need to create a resolution response to pass to the bundler
                  // to process requires after transform. By providing a
                  // specific response we can compute a non recursive one which
                  // is the least we need and improve performance.
                  return packagerServer.getDependencies({
                    platform: client.platform,
                    dev: true,
                    entryFile: filename,
                    recursive: true,
                  }).then(response => {
                    const module = packagerServer.getModuleForPath(filename);

                    return response.copy({dependencies: [module]});
                  });
                }

                // if there're new dependencies compare the full list of
                // dependencies we used to have with the one we now have
                return getDependencies(client.platform, client.bundleEntry)
                  .then(({
                    dependenciesCache,
                    dependenciesModulesCache,
                    shallowDependencies,
                    inverseDependenciesCache,
                    resolutionResponse,
                  }) => {
                    if (!client) {
                      return {};
                    }

                    // build list of modules for which we'll send HMR updates
                    const modulesToUpdate = [packagerServer.getModuleForPath(filename)];
                    Object.keys(dependenciesModulesCache).forEach(module => {
                      if (!client.dependenciesModulesCache[module]) {
                        modulesToUpdate.push(dependenciesModulesCache[module]);
                      }
                    });

                    // invalidate caches
                    client.dependenciesCache = dependenciesCache;
                    client.dependenciesModulesCache = dependenciesModulesCache;
                    client.shallowDependencies = shallowDependencies;

                    return resolutionResponse.copy({
                      dependencies: modulesToUpdate
                    });
                  });
              })
              .then((resolutionResponse) => {
                if (!client) {
                  return;
                }

                // make sure the file was modified is part of the bundle
                if (!client.shallowDependencies[filename]) {
                  return;
                }

                const httpServerAddress = httpServer.address();

                // Sanitize the value from the HTTP server
                let packagerHost = 'localhost';
                if (httpServer.address().address &&
                    httpServer.address().address !== '::' &&
                    httpServer.address().address !== '') {
                  packagerHost = httpServerAddress.address;
                }

                let packagerPort = httpServerAddress.port;

                return packagerServer.buildBundleForHMR({
                  entryFile: client.bundleEntry,
                  platform: client.platform,
                  resolutionResponse,
                }, packagerHost, packagerPort);
              })
              .then(bundle => {
                if (!client || !bundle || bundle.isEmpty()) {
                  return;
                }

                return JSON.stringify({
                  type: 'update',
                  body: {
                    modules: bundle.getModulesNamesAndCode(),
                    inverseDependencies: inverseDependenciesCache,
                    sourceURLs: bundle.getSourceURLs(),
                    sourceMappingURLs: bundle.getSourceMappingURLs(),
                  },
                });
              })
              .catch(error => {
                // send errors to the client instead of killing packager server
                let body;
                if (error.type === 'TransformError' ||
                    error.type === 'NotFoundError' ||
                    error.type === 'UnableToResolveError') {
                  body = {
                    type: error.type,
                    description: error.description,
                    filename: error.filename,
                    lineNumber: error.lineNumber,
                  };
                } else {
                  console.error(error.stack || error);
                  body = {
                    type: 'InternalError',
                    description: 'react-packager has encountered an internal error, ' +
                      'please check your terminal error output for more details',
                  };
                }

                return JSON.stringify({type: 'error', body});
              })
              .then(update => {
                if (!client || !update) {
                  return;
                }

                console.log(
                  '[Hot Module Replacement] Sending HMR update to client (' +
                  time() + ')'
                );
                client.ws.send(update);
              });
            },
            () => {
              // do nothing, file was removed
            },
          ).finally(() => {
            client.ws.send(JSON.stringify({type: 'update-done'}));
          });
        });

        client.ws.on('error', e => {
          console.error('[Hot Module Replacement] Unexpected error', e);
          disconnect();
        });

        client.ws.on('close', () => disconnect());
      })
    .done();
  });
}
示例#15
0
var ws = require('ws');
var express = require('express');
var pty = require('pty.js');
var app = express();
var server = require('http').createServer(app);
var wsServer = new ws.Server({
	server: server,
	path: '/ws'
});

var net = require('net');
var controlSock = new net.Socket({
	fd: 3, readable: true, writable: true
});
controlSock.on('error', function(){});

app.use(express.static(__dirname + '/public'));

wsServer.on('connection', function(sock) {
	var term = null;
	sock.on('message', function(message) {
		message = JSON.parse(message);
		if (message.init) {
			term = pty.spawn(
				process.env.SHELL ? process.env.SHELL : '/bin/sh', [], {
				name: message.type,
				rows: message.rows,
				cols: message.cols,
				cwd: process.env.HOME,
				env: process.env
			});
	rabbit.createChannel().then(channel => {
		wss.on("connection", socket => {
			const { url } = socket.upgradeReq;
			const queryParameters = querystring.parse(url.substr(2));
			const { name } = queryParameters;
			
			let consumerTag;
			
			if(DEBUG)
				console.log("Client connected: %s", name);
			
			connections[name] = socket;
			
			channel.assertExchange(MESSAGES_EXCHANGE_NAME, "topic", {
				durable: true
			}).then(() => {
				socket.on("message", data => {
					try {
						const decoded = JSON.parse(data);
						
						const { type } = decoded;
						
						let to;
						let forwardedMessage;
						
						switch(type) {
							case "MESSAGE_SENT":
								const { message: { conversationId, to: messageTo, text } } = decoded;
								to = messageTo;
								
								forwardedMessage = {
									type: "MESSAGE_SENT",
									message: {
										conversationId, from: name, text
									}
								};
								
								break;
								
							case "CONVERSATION_CREATED":
								const { conversation: { id, participants: [a, b] } } = decoded;
								
								to = name === a ? b : a;
								
								forwardedMessage = {
									type: "CONVERSATION_CREATED",
									conversation: {
										id, participants: [a, b]
									}
								};
								
								break;
						}
						
						if(DEBUG)
							console.log("to queue %s", to, forwardedMessage);
						
						channel.publish(MESSAGES_EXCHANGE_NAME, to, new Buffer(JSON.stringify(forwardedMessage)));
					} catch (exception) {
						if(DEBUG)
							console.error("Garbled message from user %s.", name, exception);
					}
				});
			});
			
			channel.assertQueue(name, {
				autoDelete: true
			}).then(queue => {
				channel.bindQueue(name, MESSAGES_EXCHANGE_NAME, name).then(() => {
					channel.consume(name, message => {
						try {
							const decoded = JSON.parse(message.content.toString());
							
							const { type } = decoded;
							
							let forwardedMessage;
							
							switch(type) {
								case "MESSAGE_SENT":
									const { message: { conversationId, from, text } } = decoded;
									
									forwardedMessage = {
										type: "MESSAGE_SENT",
										message: {
											conversationId, from, text
										}
									};
									
									break;
									
								case "CONVERSATION_CREATED":
									const { conversation: { id, participants } } = decoded;
									
									forwardedMessage = {
										type: "CONVERSATION_CREATED",
										conversation: {
											id, participants
										}
									};
									
									break;
							}
							
							if(DEBUG)
								console.log("to socket", forwardedMessage);
														
							connections[name].send(JSON.stringify(forwardedMessage));						
						} catch(exception) {
							if(DEBUG)
								console.error("Garbled message from queue.", exception);
						}
						
						channel.ack(message);
					}).then(response => {
						consumerTag = response.consumerTag;
					});
				});
				
				socket.on("close", () => {
					if(consumerTag)
						channel.cancel(consumerTag);
					
					delete connections[name];
				});	
			});
		});
	});	
示例#17
0
 * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 * THE SOFTWARE.
 */

var express = require('express');
var pg = require('pg');
var redis = require('redis');
var websocket = require('ws').Server;
var bodyParser = require('body-parser');

var app = express();
var pgClient = new pg.Client(process.env.DATABASE_URL || 'postgresql://mark@localhost/linkshortener');
var redisClient = redis.createClient();
var wss = new websocket({port: 3001});
var wsClients = {};

// Constants
var url_safe = ['2', 'f', 'D', '4', 'I', 'o', 'a', 'X', 'p', 'g', 'e', '9', 'i', '0', 'x', 'O', 'H', 'W', 's', 'h', 'Q', 'r', 'k', 'y', 'Z', 'c', '6', 'b', 'Y', 'S', 'J', 'M', 'E', 'G', 'l', '-', 'T', 'B', 'V', 'F', 'K', 'v', 'n', 'A', '_', 'U', 't', 'j', 'w', '1', 'd', 'N', 'm', 'u', 'C', 'R', '3', 'L', 'q', '8', 'z', 'P', '5', '7'];
var decode_array = [-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 35, -1, -1, 13, 49, 0, 56, 3, 62, 26, 63, 59, 11, -1, -1, -1, -1, -1, -1, -1, 43, 37, 54, 2, 32, 39, 33, 16, 4, 30, 40, 57, 31, 51, 15, 61, 20, 55, 29, 36, 45, 38, 17, 7, 28, 24, -1, -1, -1, -1, 44, -1, 6, 27, 25, 50, 10, 1, 9, 19, 12, 47, 22, 34, 52, 42, 5, 8, 58, 21, 18, 46, 53, 41, 48, 14, 23, 60];

pgClient.connect(function(err) {
    if (err) {
        return console.error('could not connect to database', err);
    }
});

function encode_int(i) {
    if (i === 0) {
        return '';
示例#18
0
//run: node test.js

var express = require("express"),
    http = require("http"),
    logger = require("../logger/logger.js"),
    redis = require("redis"),
    logger = require("../logger/logger.js"),
    client = redis.createClient(),
    crypto = require("crypto"),
    rooms = require("../chatterapp/rooms.js"),
    web = require("../chatterapp/websocket.js"),
    WebSocketServer = require('ws').Server,
    wss = new WebSocketServer({port: 7777});

var testApp = express();
testApp.set('port', process.env.PORT || 2222);
testApp.use(logger.logErrors);

testApp.set('development', function(){
    testApp.use(express.errorHandler());
});


http.createServer(testApp).listen(testApp.get('port'), function(){
    var port = testApp.get('port');
    logger.logger.log("info", "Chatter server listening on port: " + port);
});



//begin our test suites
示例#19
0
var WebSocketServer = require('ws').Server;
var VirtualMatrix = require('../VirtualMatrix.js');

var port = parseInt(process.argv[2]) || 8080;
var freq = parseFloat(process.argv[3]) || 5;
var dim = 8;
var movementDelta = 2;
var pressureDelta = 200;
var colDelay = 1/freq/dim;

var currentCol = 0;
var interval = false;

var matrix = new VirtualMatrix(dim, movementDelta, pressureDelta);

var wss = new WebSocketServer({'port': port});

function doCol () {
    if (0 === wss.clients.length) {
        clearInterval(interval);
        interval = false;
        return;
    }
    if (0 === currentCol) {
        matrix.simulate();
    }
    message = JSON.stringify({c:currentCol,v:matrix.getCol(currentCol)});
    wss.clients.forEach(function(client){
        client.send(message);
    });
    currentCol++;
示例#20
0
var server = require('http').createServer();
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({ server: server });
var express = require('express');
var webpack = require('webpack');
var compression = require('compression');
var app = express();
var MemoryFileSystem = require("memory-fs");
var memoryFs = require('./memoryFs');
var middleware = require('./middleware');
var fs = require('fs');
var path = require('path');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var sessions = require('./sessions.js');
var middlewares = {};
var preLoadPackages = require('./preLoadPackages');
var utils = require('./utils');
var sandbox = require('./sandbox');
var database = require('./database');
var npm = require('./npm');
var bins = require('./bins');
var liveConnection = require('./live');

preLoadPackages([
  // Core node
  'process',

  // Webpack
  'webpack',
  'node-pre-gyp',
示例#21
0
#!/usr/bin/env node

const WebSocket = require('ws');
const redis = require('redis');
var validatePath = require('./validate').validatePath;

const wss = new WebSocket.Server({ port: process.env.WS_PORT || 43471 });

const REDIS_HOST = process.env.REDIS_HOST || '127.0.0.1';
const REDIS_PORT = process.env.REDIS_PORT || 6379;

console.log('Init Redis connection on %s:%s', REDIS_HOST, REDIS_PORT);
var redisClient = redis.createClient(process.env.REDIS_PORT || 6379, process.env.REDIS_HOST || '127.0.0.1');
var redisSubscriber = redisClient.duplicate();

redisClient.on('connect', function() {
	console.log('Redis connected');
});

function broadcastPath(pathStr) {
	var path = JSON.parse(pathStr);
	wss.clients.forEach(function each(client) {
		if (client.readyState === WebSocket.OPEN) {
			if (client._socket.remoteAddress != path.ip ||
				client._socket.remotePort != path.port) { // don't send message to its submitter
				client.send('[' + pathStr + ']');
			}
		}
	});
};
示例#22
0
    localPort: 7400,
    remoteAddress: "127.0.0.1",
    remotePort: 7500
});

udp.on("ready", function () {
    var ipAddresses = getIPAddresses();
    console.log("Listening for OSC over UDP.");
    ipAddresses.forEach(function (address) {
        console.log(" Host:", address + ", Port:", udp.options.localPort);
    });
    console.log("Broadcasting OSC over UDP to", udp.options.remoteAddress + ", Port:", udp.options.remotePort);
});

udp.open();

var wss = new WebSocket.Server({
    port: 8081
});

wss.on("connection", function (socket) {
    console.log("A Web Socket connection has been established!");
    var socketPort = new osc.WebSocketPort({
        socket: socket
    });

    var relay = new osc.Relay(udp, socketPort, {
        raw: true
    });
});
示例#23
0
var WebSocketServer = require('ws').Server;
var wss = new WebSocketServer({port: 8270});

wss.on('connection', function(ws) {
  console.log('connected!');
  ws.on('message', function(message) {
    console.log('received: %s', message);
  });
  ws.send('something');
});
示例#24
0
const express = require('express');
const SocketServer = require('ws').Server;
const uuid = require('node-uuid');
const PORT = 4000;

const server = express()
  .use(express.static('public'))
  .listen(PORT, () => console.log(`Listening on ${ PORT }`));

const wss = new SocketServer({ server });

function broadcast(data) {
  const stringifiedData = JSON.stringify(data);
  wss.clients.forEach(function each(client) {
    client.send(stringifiedData);
  });
}

wss.on('connection', (socket) => {
  console.log('A new client connected');

  broadcast({type: "clientsOnline",
             content: wss.clients.length});

  socket.on('message', (incoming_msg) => {
    const message = JSON.parse(incoming_msg);

    switch (message.type) {
      case 'chatMessage':
        message.id= uuid.v4();
        message.type= "outgoingMessage";
示例#25
0
// HTTP server
http.createServer(app).listen(app.get('port'), function () {
  console.log('HTTP server listening on port ' + app.get('port'));
});

/// Video streaming section
// Reference: https://github.com/phoboslab/jsmpeg/blob/master/stream-server.js

var STREAM_MAGIC_BYTES = 'jsmp'; // Must be 4 bytes
var width = 640;
var height = 480;



// WebSocket servers
var wsServerNormal = new (ws.Server)({ port: configServer.wsPortNormal });
var wsServerThermal = new (ws.Server)({ port: configServer.wsPortThermal });
console.log('WebSocket server listening on port ' + configServer.wsPortNormal + ' and ' + configServer.wsPortThermal);

wsServerNormal.on('connection', function(socket) {
  // Send magic bytes and video size to the newly connected socket
  // struct { char magic[4]; unsigned short width, height;}
  var streamHeader = new Buffer(8);

  streamHeader.write(STREAM_MAGIC_BYTES);
  streamHeader.writeUInt16BE(width, 4);
  streamHeader.writeUInt16BE(height, 6);
  socket.send(streamHeader, { binary: true });

  console.log('New WebSocket Connection (' + wsServerNormal.clients.length + ' total)');
示例#26
0
var webServerPort = 8080;
var leapServerPort = 8081;

var playback = false;

console.log("Starting web server...");
var connect = require('connect');
connect.createServer(
    connect.static(__dirname)
).listen(webServerPort);

console.log("Starting Leap Motion server...");
var WebSocketServer = require('ws').Server, wss = new WebSocketServer({port: leapServerPort});
wss.on('connection', function(ws) {
    ws.on('message', function(message) {
        if (message === "STOPJSON") {
            playback = false;
        } else {
            fs = require('fs');
            fs.readFile('leap_output/' + message, 'utf8', function(err, data) {
                if (err) {
                    return console.log(err);
                }
                var dataPoints = data.split("|");
                playback = true;
                simulation = new DataSimulation(ws, dataPoints);
                simulation.sendData();
            });            
        }
    });
    
示例#27
0
var http = require("http");
var express = require("express");
var VehicleSubscriber = require('./src/Vehicle-Subscriber');
var AlertPublisher = require('./src/Alert-Publisher');

var app = express();
var port = process.env.PORT || 5000;

app.use('/static', express.static(__dirname + "/static"));

var server = http.createServer(app);
server.listen(port);

console.log("http server listening on %d", port);

var wss = new WebSocketServer({ server: server })
console.log("websocket server created");

var subscriberCache = {};
var subscriberId = 0;

var publisherCache = {};
var publisherId = 0;

app.get('/foobar', function(req, res){
  console.log('>>>>> GET REQUEST');
  
  res.json({
    'msg': 'Whoop, there it is.'
  });
});
示例#28
0
var Datas = require('dataviz-tangible');
var WebSocket = require('ws');
var express = require('express'),
    app = express();
app.use(express.static(__dirname + '/public'));
app.listen(8080);

var WebSocketServer = require('ws').Server
  , wss = new WebSocketServer({port: 8000});
wss.on('connection', function(ws) {
    ws.on('message', function(message) {
		obj = JSON.parse(message);
        console.log('received: %s', obj.value);
        ws.send(message);
        serialPort.write(obj.value +"\n");//Normalised to 0-255
    });
    ws.send('something');
});

var datas = new Datas({
    forecast: 'myAPIKey',//Replace with user API key from https://developer.forecast.io/
});

// définir comment gérer la réponse du service météo

datas.on('weather', function(data) {
	var unix_time=Date.now()/1000.0;
	var interp = (unix_time -data.hourly.data[0].time)/( data.hourly.data[1].time - data.hourly.data[0].time)*(data.hourly.data[1].precipIntensity-data.hourly.data[0].precipIntensity) + data.hourly.data[0].precipIntensity
    console.log("Send" + interp + "in./hr");
    serialPort.write(interp/0.4*255 +"\n");//Normalised to 0-255
});
示例#29
0
            res.writeHead(404, {"Content-Type": "text/html"});
            res.end("Not Found");
        }
    });
server.listen(8080);
server.on("listening", function() {
    console.log("Server started");
    open("http://localhost:8080/");
});
server.on("error", function(err) {
    console.log("Failed to start server:", err);
    process.exit(1);
});

// WebSocket adapter
var wss = new ws.Server({server: server});
wss.on("connection", function(socket) {
    console.log("New WebSocket connection");
    socket.on("close", function() {
        console.log("WebSocket disconnected");
    });
    socket.on("message", function(data, flags) {
        if (flags.binary) {
            try {
                // Decode the Response
                var msg = Response.decode(data);
                console.log("Received: "+msg);
            } catch (err) {
                console.log("Processing failed:", err);
            }
        } else {
示例#30
0
var WebSocketServer = require('ws').Server,
    wss = new WebSocketServer({port : 8181});

console.log("Starting server on port 8181 ...");
console.log("Awaiting connections ...");

var greetings = ["Hello", "Hi", "Greetings", "Aloha", "Wassup"];
var subjects = ["World", "You", "Everybody", "Everyone", "Y'all", "You Guys"];

var generateGreeting = function(){
    var randomChoice = function(list){
        return list[Math.floor(Math.random()*list.length)];
    };
    return randomChoice(greetings) + " " + randomChoice(subjects) + "!";
};

var randomMSDelay = function(min, max){
  return Math.floor(Math.random()*(max - min + 1) + min);
};

wss.on('connection', function(ws){
    console.log('Connection established with client');
    var greetingUpdater;
    var counter = 0;

    var randomGreetingGenerator = function(){
        var greeting = generateGreeting();
        var delay = randomMSDelay(1000,3000);
        greetingUpdater = setTimeout(function(){
            randomGreetingGenerator();
        }, delay);