forked from jupapios/nodejs-blackboard
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathapp.coffee
More file actions
97 lines (75 loc) · 2.15 KB
/
app.coffee
File metadata and controls
97 lines (75 loc) · 2.15 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
# Module dependencies
express = require 'express'
routes = require './routes'
mongoose = require 'mongoose'
stylus = require 'stylus'
nib = require 'nib'
http = require 'http'
app = express()
# Moongo
Schema = mongoose.Schema
BoardSchema = new Schema {
type : { type: Number }
value : { type: String }
x : { type: Number }
y : { type: Number }
}
db = mongoose.connect 'mongodb://localhost:27017/blackboard, mongodb://localhost:27018/blackboard,mongodb://localhost:27019/blackboard'
model = mongoose.model 'Data', BoardSchema
Data = mongoose.model 'Data'
# Configuration
app.configure () ->
app.set 'port', process.env.PORT || 3000
app.set 'views', __dirname + '/views'
app.set 'view engine', 'jade'
app.use express.favicon()
app.use express.logger('dev')
app.use express.bodyParser()
app.use express.methodOverride()
app.use express.cookieParser()
app.use stylus.middleware {
src: __dirname + '/stylus',
dest: __dirname + '/public',
compile: (str, path) ->
return stylus(str)
.set('filename', path)
.set('compress', true)
.use(nib())
.import('nib')
}
app.use app.router
app.use express.static __dirname + '/public'
app.configure 'development', () ->
app.use express.errorHandler()
# Routes
app.get '/', routes.index
#http.createServer(app).listen app.get('port'), () ->
# console.log("Nodejs blackboard running on port " + app.get('port'))
server = app.listen app.get('port'), () ->
console.log("Nodejs blackboard running on port " + app.get('port'))
# IO
users = {}
io = require('socket.io').listen server
io.set 'log level', 1
io.sockets.on 'connection', (socket) ->
socket.on 'adduser', (user) ->
if users[user]==user
socket.emit 'sign', { state: 0 }
else
socket.user = user
users[user] = user
socket.emit 'sign', { state: 1 }
Data.find {}, (err, docs) ->
if err
throw err
socket.emit 'objects', docs
io.sockets.emit 'update', users
socket.on 'handle', (data) ->
Data.findById data.obj[0], (err, p) ->
p.x=data.obj[1]
p.y=data.obj[2]
p.save()
socket.broadcast.emit 'handle', data
socket.on 'disconnect', () ->
delete users[socket.user]
io.sockets.emit 'update', users