私が抱えている問題は、クライアントに送り返すデータが gzip 形式で圧縮されているかどうかを確認する方法がわからないことです。コマンドラインからサーバーの出力を見ると、次のように表示されます。
debug - websocket writing 3:::{"result":1368673052397}
debug - websocket writing 3:::{"result":1368673053399}
...
私には、サーバーが送信前に最初に圧縮するのではなく、ASCII形式で応答を書き込んでいるように見えます。
以下は、これらの結果を生成するために私が書いた例です。「ブラウザクライアントgzip」を設定している限り、私が読んだことから、応答はgzipで送信されるはずです。それらが実際に圧縮された応答であることをサーバーのデバッグ情報からどのように確認できますか。
サーバーを起動するときに、BASH で次のコマンドを使用します。
$ NODE_ENV=本番ノード 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();
});