diff options
| author | Ivan Shen <iwshen11@gmail.com> | 2019-03-05 21:48:34 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-03-05 21:48:34 +0000 |
| commit | 7ea91f912c1511f60466c3a47ad6ee075cecc0f2 (patch) | |
| tree | 03121db88872a58363eed00703ad57f2151918fd /web/routes | |
| parent | b6e80aee2f946949165ef6fcc6f0c433c60123b9 (diff) | |
| parent | a5ff29d43a952ebe2fcc18181a01beda0e5d62d2 (diff) | |
Merge pull request #24 from csc301-winter-2019/feat/8
Add live updates functionality
Diffstat (limited to 'web/routes')
| -rw-r--r-- | web/routes/index.js | 16 | ||||
| -rw-r--r-- | web/routes/sse.js | 15 |
2 files changed, 30 insertions, 1 deletions
diff --git a/web/routes/index.js b/web/routes/index.js index b2d0796..b2ba91f 100644 --- a/web/routes/index.js +++ b/web/routes/index.js @@ -2,7 +2,7 @@ var express = require('express'); var router = express.Router(); var Mockpoints = require('../models/mockpoints'); var Points = require('../models/points'); - +const connections = []; /* GET home page. */ router.get('/', function(req, res, next) { // for now just redirect to /map @@ -36,10 +36,24 @@ router.post('/mobilerequest', function(req, res) { console.log(`err inserting mobile request into db: ${err}`); res.status(500).send({ error: "boo:(" }); } else { + // send event to all connections + for(var i = 0; i < connections.length; i++) { + connections[i].sseSend(data); + } console.log(result); res.status(200).send({'status': 'success', 'data': data}); } }); + }); + +router.get('/stream', function(req, res){ + // set up server side event (communication line between front end and server) + res.sseSetup(); + // send an event to the front end to open the connection + res.sseSend('ok'); + // push connection to connection array + connections.push(res); +}); module.exports = router; diff --git a/web/routes/sse.js b/web/routes/sse.js new file mode 100644 index 0000000..5cd9a3f --- /dev/null +++ b/web/routes/sse.js @@ -0,0 +1,15 @@ +module.exports = function (req, res, next) { + res.sseSetup = function() { + res.writeHead(200, { + 'Content-Type': 'text/event-stream', + 'Cache-Control': 'no-cache', + 'Connection': 'keep-alive' + }) + } + + res.sseSend = function(data) { + res.write("data: " + JSON.stringify(data) + "\n\n"); + } + + next() +}
\ No newline at end of file |
