微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

javascript – 以gzip格式从node.js服务器向客户端发送socket.io响应数据

我遇到的问题是我不知道如何能够判断我发送回客户端的数据是否以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();
});

解决方法

浏览器客户端gzip选项为从/socket.io/socket.io.js提供的socket.io脚本启用gzip压缩.它不会影响实际的WebSocket连接.

WebSocket协议本身最近才增加了对通过套接字发送的数据压缩的支持. Soket.io does not yet support compression,也不是other node WebSocket servers.

说实话,对于您在示例中发送的少量数据,压缩实际上会适得其反,因为它可能会增加通过线路发送的数据量.

原文地址:https://www.jb51.cc/js/158739.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐