I wired up gulp and gulp-watch to notify my browser-side javascript to reload the page, whenever I change front-end javascript, html, etc...
Something like....
Primus = require 'primus'
http = require 'http'
logging = require './logging'
logSpark = (spark, message) ->
logging.logBlue('Spark ' + spark.id + ' from ' + spark.address.ip + ' ' + message + ' (now ' + sparks + ' total sparks active)')
# Start sparks server
server = http.createServer().listen(3000)
sparkServer = new Primus(server, { transformer: 'websockets' })
sparkServer.save('./public/script/primus.js');
logging.logBlue 'Sparks server listening on port ' + 3000 + '....'
sparks = 0
# Log spark connections
sparkServer.on('connection', (spark) ->
sparks += 1
logSpark(spark, 'connected on port ' + spark.address.port))
sparkServer.on('disconnection', (spark) ->
sparks -= 1
logSpark(spark, 'disconnected'))
exports.broadcast = () -> sparkServer.write('refresh') # arbitrary message text here
And in gulpfile.js:
watch({glob: "public/*"}, function() {
clientRefresh.broadcast()
});
Plus in the html:
<head>
<script type='text/javascript' src='/script/main.js'></script>
<script src="/script/primus.js"></script>
<script>
var primus = new Primus('http://localhost:3000');
primus.on('data', function message(data) {
console.log('@@@ refreshing by gulp ' + data + ' request @@@');
document.location.reload(true);
});
</script>
</head>
I am not familiar with supervisor, but I use nodemon to automatically restart my project's back-end, and have a script that does that plus it starts gulp, which takes care of both types of automatic restart (back-end with nodemon, and front-end with the above).