The problem I am facing is that I do not know how to determine if the data that I send back to the client will be compressed in gzip format. Looking at the output of my server from the command line, I see:
debug - websocket writing 3:::{"result":1368673052397} debug - websocket writing 3:::{"result":1368673053399} ...
It seems to me that the server writes the response in ascii form, and does not compress it before sending.
The following is an example that I wrote to get these results. From what I read as long as I installed the "gzip browser", my answers should be sent to gzip. If they are not the way I do it, and if I can somehow tell from the server debugging information, that they are actually compressed answers.
When I start the server, I use the following command in BASH:
$ NODE_ENV = production node app.js
var express = require('express'), http = require('http'); var app = express(), server = http.createServer(app), io = require('socket.io').listen(server); io.configure('production', function() { io.enable('browser client minification'); io.enable('browser client etag'); io.enable('browser client gzip'); io.set('log level', 3); }); app.use(express.logger('dev')); app.get('/', function(req, res) { res.send( "<script src='/socket.io/socket.io.js'></script>\n"+ "<script src='http://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js'></script>\n"+ "<script>\n"+ "var socket=io.connect('http://127.0.0.1:3000');\n"+ "socket.on('message', function(data) {\n"+ " $(\"h2\").text(data);\n"+ "});\n"+ "</script>\n"+ "<h1>"+process.env.NODE_ENV+"</h1>\n"+ "<h2></h2>\n" ); }); server.listen('3000'); io.sockets.on('connection', function(webSocket) { function whileLoop() { setTimeout(function() { var epoch = (new Date).getTime(); var jsonData = "{\"result\":"+epoch+"}"; webSocket.send(jsonData); whileLoop(); }, 1000); } whileLoop(); });
Brad.Smith
source share