mirror of
https://github.com/codeninjasllc/codecombat.git
synced 2025-04-27 14:33:59 -04:00
Refactored files and server
This commit is contained in:
parent
45634e9413
commit
4d1c772719
4 changed files with 75 additions and 10 deletions
|
@ -18,7 +18,8 @@ logging = require './server/logging'
|
|||
sprites = require './server/sprites'
|
||||
contact = require './server/contact'
|
||||
languages = require './server/languages'
|
||||
queue = require './server/queue'
|
||||
multiplayer = require './server/multiplayer'
|
||||
sendwithus = require './server/sendwithus'
|
||||
|
||||
https = require 'https'
|
||||
http = require 'http'
|
||||
|
@ -76,6 +77,10 @@ app.configure(->
|
|||
|
||||
app.configure('development', -> app.use(express.errorHandler()))
|
||||
|
||||
multiplayer.connectToScoringQueue()
|
||||
sendwithus.setupQueue()
|
||||
|
||||
|
||||
auth.setupRoutes(app)
|
||||
db.setupRoutes(app)
|
||||
sprites.setupRoutes(app)
|
||||
|
@ -83,7 +88,8 @@ contact.setupRoutes(app)
|
|||
file.setupRoutes(app)
|
||||
folder.setupRoutes(app)
|
||||
languages.setupRoutes(app)
|
||||
queue.setupRoutes(app)
|
||||
multiplayer.setupRoutes(app)
|
||||
sendwithus.setupQueue app
|
||||
|
||||
# Some sort of cross-domain communication hack facebook requires
|
||||
app.get('/channel.html', (req, res) ->
|
||||
|
@ -121,3 +127,5 @@ isOldBrowser = (req) ->
|
|||
return true if b is 'Firefox' and v < 21
|
||||
return true if b is 'IE' and v < 10
|
||||
false
|
||||
|
||||
|
||||
|
|
27
server/multiplayer.coffee
Normal file
27
server/multiplayer.coffee
Normal file
|
@ -0,0 +1,27 @@
|
|||
config = require '../server_config'
|
||||
winston = require 'winston'
|
||||
mongoose = require 'mongoose'
|
||||
async = require 'async'
|
||||
errors = require './errors'
|
||||
aws = require 'aws-sdk'
|
||||
db = require './db'
|
||||
mongoose = require 'mongoose'
|
||||
events = require 'events'
|
||||
queues = require 'queue'
|
||||
|
||||
module.exports.connectToScoringQueue = -> queues.initializeScoringTaskQueue() unless queues.scoringTaskQueue?
|
||||
|
||||
module.exports.setupRoutes = (app) ->
|
||||
return
|
||||
|
||||
|
||||
module.exports.setupRoutes = (app) ->
|
||||
app.all '/multiplayer/*', (req, res) ->
|
||||
unless scoringTaskQueue?
|
||||
|
||||
errors.custom res, 503, "Currently initializing scoring queue"
|
||||
|
||||
return
|
||||
|
||||
|
||||
|
|
@ -8,10 +8,12 @@ db = require './db'
|
|||
mongoose = require 'mongoose'
|
||||
events = require 'events'
|
||||
|
||||
queueClient = null
|
||||
simulationQueue = null
|
||||
queueClient = unefined
|
||||
module.exports.scoringTaskQueue = undefined
|
||||
module.exports.sendwithusQueue = undefined
|
||||
|
||||
module.exports.setupRoutes = (app) ->
|
||||
#module.exports.setupRoutes = (app) ->
|
||||
# app.get '/multiplayer/'
|
||||
###queueClient.registerQueue "simulationQueue", {}, (err,data) ->
|
||||
simulationQueue = data
|
||||
simulationQueue.subscribe 'message', (err, data) ->
|
||||
|
@ -21,10 +23,31 @@ module.exports.setupRoutes = (app) ->
|
|||
winston.info "Deleted message"
|
||||
###
|
||||
|
||||
module.exports.initializeScoringTaskQueue = (cb) ->
|
||||
queueClient = generateQueueClient() unless queueClient?
|
||||
queueClient.registerQueue "scoring", {}, (err,data) ->
|
||||
if err?
|
||||
winston.error "There was an error registering the scoring queue."
|
||||
throw new Error "There was an error registering the scoring queue."
|
||||
module.exports.scoringTaskQueue = data
|
||||
cb? err, module.exports.scoringQueue
|
||||
|
||||
|
||||
module.exports.initializeSendwithusQueue = (cb) ->
|
||||
queueClient = generateQueueClient() unless queueClient?
|
||||
queueClient.registerQueue "sendwithus", {}, (err,data) ->
|
||||
if err?
|
||||
errorString = "There was an error registering the sendwithus queue."
|
||||
winston.error errorString
|
||||
throw new Error errorString
|
||||
module.exports.sendwithusQueue = data
|
||||
cb? err, module.exports.sendwithusQueue
|
||||
|
||||
|
||||
|
||||
module.exports.generateQueueClient = ->
|
||||
|
||||
|
||||
generateQueueClient = ->
|
||||
if config.isProduction
|
||||
queueClient = new SQSQueueClient()
|
||||
else
|
||||
|
@ -117,7 +140,7 @@ class MongoQueueClient
|
|||
generateMessageModel: ->
|
||||
#do find something like: messages not processing, queue as current queue, visibility time before now, sort by insertion time, findOne
|
||||
schema = new mongoose.Schema
|
||||
messageBody : Object,
|
||||
messageBody: Object,
|
||||
processing: false,
|
||||
insertionTime: {type: Date, default: Date.now }
|
||||
queue: String
|
||||
|
@ -139,15 +162,15 @@ class MongoQueue extends events.EventEmitter
|
|||
|
||||
receieveMessage: (callback) ->
|
||||
conditions = {queue: @queueName, processing: false, scheduledVisibilityTime: {$lt:Date.now()}}
|
||||
options = {sort: 'insertionTime'}
|
||||
update = {$set:{processing: true}}
|
||||
options = {sort: 'scheduledVisibilityTime'}
|
||||
update = {$set: {processing: true}}
|
||||
@Message.findOneAndUpdate conditions, update, options, =>
|
||||
if err? then @emit 'error',err,data else @emit 'message',err,data
|
||||
callback? err,data
|
||||
|
||||
deleteMessage: (receiptHandle, callback) ->
|
||||
#receiptHandle in this case is an ID
|
||||
conditions = {queue: @queueName, _id : receiptHandle}
|
||||
conditions = {queue: @queueName, _id: receiptHandle}
|
||||
@Message.findOneAndRemove conditions, {}, =>
|
||||
if err? then @emit 'error',err,data else @emit 'message',err,data
|
||||
callback? err,data
|
||||
|
|
|
@ -1,6 +1,13 @@
|
|||
config = require '../server_config'
|
||||
sendwithusAPI = require 'sendwithus'
|
||||
swuAPIKey = config.mail.sendwithusAPIKey
|
||||
queues = require './queue'
|
||||
|
||||
module.exports.setupQueue = -> queues.initializeSendwithusQueue() unless queues.sendwithusQueue?
|
||||
|
||||
module.exports.setupRoutes = (app) ->
|
||||
return
|
||||
|
||||
|
||||
options = { DEBUG: not config.isProduction }
|
||||
module.exports.api = new sendwithusAPI swuAPIKey, options
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue