-
Notifications
You must be signed in to change notification settings - Fork 25
/
Copy pathserver.coffee
36 lines (30 loc) · 983 Bytes
/
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
ws = require('ws').Server
http = require 'http'
express = require 'express'
cookie = require 'cookie-cutter'
UserStore = require('./lib/user-store')
module.exports = ->
# Abstracted Redis Store
@UserStore = new UserStore()
# Express App (Static Frontend)
@app = express()
@app.configure =>
@app.use @app.router
@app.use '/', express.static('public')
# HTTP Server
@server = http.createServer(@app)
@server.listen(process.env.PORT or 5000)
# Websockets Server
@socketServer = new ws(server: @server)
@socketServer.on "connection", (socket) =>
socket.on 'message', (data, flags) =>
user = JSON.parse(data)
console.log user
@UserStore.add user, (err, users) ->
return console.error(err) if err
@UserStore.getByUrl user.url, (err, users) ->
return console.error(err) if err
for client in @socketServer.clients
client.send JSON.stringify(users)
# Return app for testability
@app