Got questions, comments, patches, etc.?
Contact Jason Woofenden
gitweb
/
peach-cgt.git
/ commitdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
| commitdiff |
tree
raw
|
patch
|
inline
| side by side (parent:
9a03649
)
send a space every 12 seconds for keepalive
author
Jason Woofenden
<jason@jasonwoof.com>
Wed, 25 Jul 2012 21:41:26 +0000
(17:41 -0400)
committer
Jason Woofenden
<jason@jasonwoof.com>
Wed, 25 Jul 2012 21:44:02 +0000
(17:44 -0400)
server.coffee
patch
|
blob
|
history
diff --git
a/server.coffee
b/server.coffee
index
8e35241
..
b16f29f
100644
(file)
--- a/
server.coffee
+++ b/
server.coffee
@@
-30,6
+30,7
@@
max_game_idle = 3 * 60 * 60 * 1000 # three hours (in miliseconds)
# timeout function with args in convenient order
timeout = (ms, func) -> setTimeout func, ms
# timeout function with args in convenient order
timeout = (ms, func) -> setTimeout func, ms
+interval = (ms, func) -> setInterval func, ms
now_s = ->
d = new Date()
now_s = ->
d = new Date()
@@
-143,10
+144,10
@@
get_handler = (args, out, request, url_parts) ->
return
game = games[args.game]
return
game = games[args.game]
+ out.writeHead 200, 'Content-Type': 'text/javascript'
waiter = games["#{args.agent}_waiter"]
if waiter?
waiter = games["#{args.agent}_waiter"]
if waiter?
- waiter.writeHead 200, 'Content-Type': 'text/javascript'
waiter.end '[]'
game["#{args.agent}_waiter"] = out
waiter.end '[]'
game["#{args.agent}_waiter"] = out
@@
-211,14
+212,12
@@
answer_now = (game) ->
queue = game.p1_queue
game.p1_waiter = false
game.p1_queue = []
queue = game.p1_queue
game.p1_waiter = false
game.p1_queue = []
- waiter.writeHead 200, 'Content-Type': 'text/javascript'
waiter.end JSON.stringify queue
if game.p2_waiter and game.p2_queue.length
waiter = game.p2_waiter
queue = game.p2_queue
game.p2_waiter = false
game.p2_queue = []
waiter.end JSON.stringify queue
if game.p2_waiter and game.p2_queue.length
waiter = game.p2_waiter
queue = game.p2_queue
game.p2_waiter = false
game.p2_queue = []
- waiter.writeHead 200, 'Content-Type': 'text/javascript'
waiter.end JSON.stringify queue
# this marks a game as "dirty" and makes sure there's exactly one timeout
waiter.end JSON.stringify queue
# this marks a game as "dirty" and makes sure there's exactly one timeout
@@
-267,6
+266,15
@@
new_game = (slug) ->
return game
return game
+long_poll_keepalive = ->
+ for g of games
+ if g.p1_waiter
+ g.p1_waiter.write ' '
+ if g.p2_waiter
+ g.p2_waiter.write ' '
+
+interval 12000, long_poll_keepalive
+
http_server = http.createServer (req, res) ->
url_parts = url.parse req.url, true
if url_parts.query is undefined
http_server = http.createServer (req, res) ->
url_parts = url.parse req.url, true
if url_parts.query is undefined