-
Notifications
You must be signed in to change notification settings - Fork 0
/
app.coffee
43 lines (33 loc) · 1.09 KB
/
app.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
app = require('koa')()
router = require('koa-router')
serve = require('koa-static')
app.use serve('./public')
app.use router(app)
server = require('http').Server(app.callback())
io = require('socket.io')(server)
Crawler = require './crawler'
crawler = new Crawler
crawler.start()
co = require 'co'
wait = (ms) -> new Promise (done) ->
setTimeout done, ms
io.on 'connection', (socket) ->
console.log 'connect', socket.id, crawler.contents.feedList.length
socket.emit 'init', {feedList: [], feedCount: crawler.contents.feedList.length}
do co ->
for feed in crawler.contents.feedList
console.log 'update-feed', socket.id, feed.feedTitle
io.sockets.emit 'update-feed', feed
yield wait(150)
running = false
socket.on 'request-crawl', ->
unless running
running = true
console.log 'start crawler'
crawler.crawl().then -> running = false
else
console.log 'crawler is running'
crawler.on 'update-feed', ({feedTitle, entries, feedUrl}) ->
io.sockets.emit 'update-feed', {feedTitle, entries, feedUrl}
server.listen(2345)
console.log 'start server', 2345