diff --git a/app.js b/app.js index 8c5bae1..363751a 100644 --- a/app.js +++ b/app.js @@ -4,31 +4,22 @@ * Author :: Stephen Braitsch */ -var http = require('http'); var express = require('express'); var app = express(); -var server = http.createServer(app); +var http = require('http').Server(app); -global.host = 'localhost'; -global.socket = require('socket.io').listen(server); -global.socket.set('log level', 1); -global.socket.set('transports', [ 'websocket', 'flashsocket', 'htmlfile', 'xhr-polling', 'jsonp-polling']); +// create the single instance of socket.io that will be shared across all applications // +global.io = require('socket.io')(http); -app.root = __dirname; +app.set('port', process.env.PORT || 3000); +app.set('views', __dirname + '/app/server/views'); +app.set('view engine', 'jade'); +app.use(require('stylus').middleware({ src: __dirname + '/app/public' })); +app.use(express.static(__dirname + '/app/public')); -app.configure(function(){ - app.set('port', process.env.PORT || 3000); - app.set('views', app.root + '/app/server/views'); - app.set('view engine', 'jade'); - app.locals.pretty = true; - app.use(express.bodyParser()); - app.use(express.methodOverride()); - app.use(require('stylus').middleware({ src: app.root + '/app/public' })); - app.use(express.static(app.root + '/app/public')); -}); - -require('./app/server/router')(app); +require('./app/server/routes')(app); -server.listen(app.get('port'), function(){ - console.log("Express server listening on port %d in %s mode", app.get('port'), app.settings.env); -}); \ No newline at end of file +http.listen(app.get('port'), function() +{ + console.log('Express server listening on port', app.get('port')); +}); diff --git a/app/public/js/canvas.js b/app/public/js/canvas.js index 8d2f02e..3e8d224 100644 --- a/app/public/js/canvas.js +++ b/app/public/js/canvas.js @@ -14,15 +14,17 @@ function gui() { var _shape = 'Line'; var _stroke = { - color : '#'+Math.floor(Math.random()*16777215).toString(16), + color : '#'+(Math.random()*0xFFFFFF<<0).toString(16), alpha : 100, rainbow : true } + while(_stroke.color.length < 7) _stroke.color += '0'; var _fill = { - color : '#'+Math.floor(Math.random()*16777215).toString(16), + color : '#'+(Math.random()*0xFFFFFF<<0).toString(16), alpha : 100, rainbow : true } + while(_fill.color.length < 7) _fill.color += '0'; var _size = 25; var _wiggle = 10; var _onSave = function() {}; @@ -157,7 +159,7 @@ var drawTriangle = function(e) function initSocket() { - socket = io.connect('/doodle'); + socket = io.connect(':3000/doodle'); socket.on('status', function (data) { connections = data; var i=0; for (p in connections) i++; diff --git a/app/public/vendor/JS3-0.3.1.js b/app/public/vendor/JS3-0.3.1.js index 4ef5031..3c7ad0f 100755 --- a/app/public/vendor/JS3-0.3.1.js +++ b/app/public/vendor/JS3-0.3.1.js @@ -3,7 +3,7 @@ * JS3 - A Drawing & Tweening API for the JavaScript Canvas * Version : 0.3.1 * Release Date : May 22 2012 - * Documentation : http://js3.quietless.com/ + * Documentation : http://js3.braitsch.io/ * * Copyright 2012 Stephen Braitsch :: @braitsch * diff --git a/app/server/modules/doodle-socket.js b/app/server/modules/doodle-socket.js index fa63b18..31ba591 100644 --- a/app/server/modules/doodle-socket.js +++ b/app/server/modules/doodle-socket.js @@ -1,29 +1,34 @@ - module.exports = function() { - var connections = { }; - - global.socket.of('/doodle').on('connection', function(socket) { + + var nsp = io.of('/doodle'); + nsp.on('connection', function(socket) { + // give each connected user a random color so it's easier to tell them apart in the chat log // socket.on('draw-data', function(data) { // append this socket's id so we know who is talking // data.id = socket.id; socket.broadcast.emit('draw-data', data); }); + + socket.on('user-message', function(data) { + data.color = socket.color; + broadcastMessage('user-message', data); + }); function dispatchStatus() { - brodcastMessage('status', connections); + broadcastMessage('status', connections); } - - function brodcastMessage(message, data) + + function broadcastMessage(message, data) { // remove socket.emit if you don't want the sender to receive their own message // socket.emit(message, data); socket.broadcast.emit(message, data); } - + // handle connections & disconnections // connections[socket.id] = {}; dispatchStatus(); socket.on('disconnect', function() { diff --git a/app/server/router.js b/app/server/routes.js similarity index 100% rename from app/server/router.js rename to app/server/routes.js diff --git a/app/server/views/canvas.jade b/app/server/views/canvas.jade index d27642c..57e8d15 100644 --- a/app/server/views/canvas.jade +++ b/app/server/views/canvas.jade @@ -13,16 +13,16 @@ block content #gui #footer - #credit Made by -   + #credit + | Made by  a(href='http://twitter.com/braitsch') braitsch -  -  + |  -  a(href='http://github.com/braitsch/doodle') Source on Github block scripts script(src='/socket.io/socket.io.js') - script(src='/vendor/jquery-2.1.0.min.js') script(src='/vendor/dat.gui.min.js') + script(src='/vendor/jquery-2.1.0.min.js') script(src='/vendor/JS3-0.3.1.js') script(src='/js/canvas.js') diff --git a/package.json b/package.json index 8992ce9..dce3b6a 100644 --- a/package.json +++ b/package.json @@ -1,23 +1,23 @@ { "name": "node-doodle", - "version": "0.0.1", - "author": { - "name": "Stephen Braitsch", - "email": "stephen@quietless.com" + "version": "1.1.0", + "description": "http://doodle.braitsch.io", + "author": "Stephen Braitsch ", + "website":{ + "url": "http://doodle.braitsch.io" }, "repository": { "type": "git", "url": "git@github.com:braitsch/doodle.git" }, - "private": true, "dependencies": { - "express": "3.0.6", - "stylus": "0.50.0", - "jade": "1.9.2", - "mongodb": "1.2.7", - "socket.io": "0.9.14" + "express": "4.13.3", + "jade": "1.11.0", + "stylus": "0.52.4", + "vhost": "3.0.2", + "socket.io": "1.3.7" }, "engines": { - "node": "0.10.29" + "node": "4.2.1" } } \ No newline at end of file