I am trying to serve some JavaScript files with Node.js and for whatever reason the files are being cut off in the middle of the transmission. The code:
http
have you tried to use built-in HTTPS server? http://nodejs.org/docs/v0.4.11/api/https.html
I have just seen this too. Same setup - HTTPS, latest node from the git repo.
One large file (170k) never properly completing sending. I tried to switch from async to synch but it made no difference. Only thing that fixed it so far was making the file smaller. It was a big floppy jpg so it was easy to do. Problem vanished.
It might be a disconnect between the default encoding for readFile and res.end(). readFile just loads the raw data if you do not specify an encoding whereas end() defaults to utf8. I'm not 100% sure but the raw data from the file could return a shorter length than the utf8 encoded string that end emits.
I tried recreating your error and failed so it might be you need to upgrade your version of node. I'm using the latest code from github.
This problem should be solved in the newest version of Node.js. Can you test it out on v0.4.2?
Instead of Content-Length: data.length
you should use Content-Length: Buffer.byteLength(data, 'utf8')
where Buffer
is a global object (node 0.3.x) or var Buffer = require('buffer')
in node 0.2.x which will save you a lot of hassle and might fix your problem with truncated answers too.