diff options
| author | Jules Laplace <jules@okfoc.us> | 2013-02-22 09:59:20 -0800 |
|---|---|---|
| committer | Jules Laplace <jules@okfoc.us> | 2013-02-22 09:59:20 -0800 |
| commit | 1938bceb0a478358897371c235860397ae2e3e5c (patch) | |
| tree | ead382ee9c38443c819bbdcb926ff35fb8255342 /server.js | |
basic chat app
Diffstat (limited to 'server.js')
| -rw-r--r-- | server.js | 99 |
1 files changed, 99 insertions, 0 deletions
diff --git a/server.js b/server.js new file mode 100644 index 0000000..948bc9e --- /dev/null +++ b/server.js @@ -0,0 +1,99 @@ +var express = require('express'), + knox = require('knox'), + fs = require('fs'), + app = express(), + http = require('http'), + server = http.createServer(app), + io = require('socket.io').listen(server), + mongoose = require('mongoose'); + +var s3 = knox.createClient({ + key: process.env.ASDF_S3_KEY, + secret: process.env.ASDF_S3_SECRET, + bucket: 'dump2' +}); + +app.configure(function(){ + app.use(express.logger()); + app.use(express.methodOverride()); + app.use(express.bodyParser()); + app.use(express.static(__dirname + '/public')); +}); + +app.get('/latest', function(req, res){ + var data = { 'image_url': Images.latest() }; + res.setHeader('Content-Type', 'application/json'); + res.send(JSON.stringify(data)); +}); + +app.post('/upload', function(req, res) { + var user = req.body.socketid; + var image = req.files.image; + var filename = "/test/" + timestamp() + "-" + image.name + + var s3req = s3.putFile(image.path, filename, { + 'Content-Length': image.size, + 'Content-Type': image.type, + 'x-amz-acl': 'public-read' + }, function(err, s3res){ + if (200 == s3res.statusCode) { + ImageURL = s3res.client._httpMessage.url; // janked + Images.push( ImageURL ); + + console.log('saved to %s', ImageURL); + + var data = { 'status': 'ok' }; + res.setHeader('Content-Type', 'application/json'); + res.send(JSON.stringify(data)); + } + }); +}); + +io.sockets.on( 'connection', function(socket){ + socket.emit( 'join', Channel.join() ); + function echo +}); + +var port = process.env.PORT || 5000; +server.listen(port); +console.log('Listening on port ' + port); + +function timestamp() { + return Math.round(new Date().getTime()); +} + +var State = { + WAITING: 0, + DRAWING: 1, + VOTING: 2, + WIN: 3, + RESET: -1, +} +function Channel() { + this.state = State.WAITING; + this.messages = []; + this.players = {}; + this.message_id = 0; +} +Channel.prototype.push = function(message){ + if (this.messages.length > 20) this.messages.shift(); + var message = { id: ++this.message_id, content: message, user: username, faves: 0 }; + this.messages.push(message); + io.sockets.emit('message', JSON.stringify(message)); +} +Channel.prototype.fave = function(id){ + for (var i = 0; i < messages.length; i++) { + if (messages[i].id == id) { + messages[i].faves++; + } + } +} +Channel.prototype.join = function(){ + return { + state: this.state, + messages: this.messages, + players: this.players + } +} + + |
