Skip to content

Instantly share code, notes, and snippets.

@aviflax
Created December 4, 2011 23:16
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save aviflax/1431609 to your computer and use it in GitHub Desktop.
Save aviflax/1431609 to your computer and use it in GitHub Desktop.
Trying to figure out how to determine http transfer progress accurately in Node,js
curl -i -# -o /dev/null http://localhost:3000/
fs = require 'fs'
path = require 'path'
http = require 'http'
httpServer = http.createServer()
filePath = "/Users/avi/Applications/Games/StarCraft II/Campaigns/Liberty.SC2Campaign/enUS.SC2Assets"
httpServer.on 'request', (req, res) ->
fs.stat filePath, (err, stats) ->
if err
res.writeHead 500, {'Content-Type': 'text/plain'}
res.end err.message
return
bytesSent = 0
res.writeHead 200, {'Content-Length': stats.size}
fileStream = fs.createReadStream filePath
fileStream.on 'end', -> res.end()
fileStream.on 'data', (data) ->
res.write data
bytesSent += data.length
progress = (bytesSent / stats.size * 100).toFixed(2)
process.stdout.write "Progress: #{progress} \r"
httpServer.listen 3000
console.log 'Listening on port 3000'
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment