mirror of
https://github.com/overte-org/overte.git
synced 2025-05-06 17:29:57 +02:00
76 lines
No EOL
1.8 KiB
JavaScript
76 lines
No EOL
1.8 KiB
JavaScript
'use strict';
|
|
|
|
/**
|
|
* Module dependencies.
|
|
*/
|
|
|
|
var express = require('express');
|
|
var http = require('http');
|
|
var _ = require('underscore');
|
|
var shortid = require('shortid');
|
|
|
|
|
|
var app = express();
|
|
var server = http.createServer(app);
|
|
|
|
var WebSocketServer = require('websocket').server;
|
|
var wsServer = new WebSocketServer({
|
|
httpServer: server
|
|
});
|
|
|
|
var users = [];
|
|
var connections = [];
|
|
wsServer.on('request', function(request) {
|
|
console.log("SOMEONE JOINED");
|
|
var connection = request.accept(null, request.origin);
|
|
connections.push(connection);
|
|
connection.on('message', function(data) {
|
|
var userData = JSON.parse(data.utf8Data);
|
|
var user = _.find(users, function(user) {
|
|
return user.username === userData.username;
|
|
});
|
|
if (user) {
|
|
// This user already exists, so just update score
|
|
users[users.indexOf(user)].score = userData.score;
|
|
} else {
|
|
users.push({
|
|
id: shortid.generate(),
|
|
username: userData.username,
|
|
score: userData.score
|
|
});
|
|
}
|
|
connections.forEach(function(aConnection) {
|
|
aConnection.sendUTF(JSON.stringify({
|
|
users: users
|
|
}));
|
|
})
|
|
});
|
|
});
|
|
|
|
app.get('/users', function(req, res) {
|
|
res.send({
|
|
users: users
|
|
});
|
|
});
|
|
|
|
|
|
|
|
/* Configuration */
|
|
app.set('views', __dirname + '/views');
|
|
app.use(express.static(__dirname + '/public'));
|
|
app.set('port', (process.env.PORT || 5000));
|
|
|
|
if (process.env.NODE_ENV === 'development') {
|
|
app.use(express.errorHandler({
|
|
dumpExceptions: true,
|
|
showStack: true
|
|
}));
|
|
}
|
|
|
|
|
|
/* Start server */
|
|
server.listen(app.get('port'), function() {
|
|
console.log('Express server listening on port %d in %s mode', app.get('port'), app.get('env'));
|
|
});
|
|
|
|
module.exports = app; |