-
Notifications
You must be signed in to change notification settings - Fork 2
/
Copy pathserver.coffee
78 lines (62 loc) · 1.77 KB
/
server.coffee
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
express = require 'express'
sock = require 'socket.io'
helpers = require './helpers.coffee'
# Variables
gameName = "Platformer"
gamePort = 1337 # A port for testing
# TODO: development/production environments and configuration
# Express
# Make server
app = do express.createServer
# Set up static files, coffee and less
coffeeDir = __dirname + '/coffee'
jsDir = __dirname + '/js'
lessDir = __dirname + '/less'
cssDir = __dirname + '/css'
publicDir = __dirname + '/static'
# Make special static dirs if they don't exist (express won't make them by itself)
helpers.setupDirs [jsDir, cssDir]
# Enable static serving
app.use express.compiler
src: coffeeDir,
dest: jsDir,
enable: ['coffeescript']
app.use express.compiler
src: lessDir,
dest: cssDir,
enable: ['less']
app.use express.static jsDir
app.use express.static cssDir
app.use express.static publicDir
# Set up view engine
app.set 'view engine', 'jade'
# Start listening on the game port
app.listen gamePort
# Express Routes
app.get '/', (req, res) ->
pageTitle = "playing"
res.render 'play', gameName: gameName, pageTitle: pageTitle
# Socket.io
# Start socket.io listening on the next port
io = sock.listen app
# Set up socket.io
io.sockets.on 'connection', (socket) ->
socket.on 'start', (data) ->
socket.set 'going', true, ->
socket.get 'number', (err, number) ->
if err then number = 0
socket.emit 'number', n: number
socket.set 'number', number
socket.on 'stop', (data) ->
socket.set 'going', false
socket.on 'reset', (data) ->
socket.set 'going', false
socket.emit 'number', n: 0
socket.set 'number', 0
socket.on 'number', (data) ->
socket.get 'going', (err, going) ->
if going
socket.emit 'number', n: data.n
socket.set 'number', data.n
else
socket.set 'number', data.n