【问题标题】:Manually GZIP data over websocket?通过 websocket 手动 GZIP 数据?
【发布时间】:2014-02-13 00:23:58
【问题描述】:

我有一个网络套接字代理,它接受消息并将它们传递给客户端(浏览器和 Flash)。

为了进行优化,我希望对通过该 Web 套接字连接的数据进行 GZIP 压缩。这是否可能,和/或其他可能适用的方法是什么?

我知道根据this StockOverflow 问题正在开发一个 WebSocket 扩展。

我目前在 Scala/Jetty 应用程序中的方法:

def compressBytes(bytes:Array[Byte]) = {
    val bos = new ByteArrayOutputStream
    val gzip = new GZIPOutputStream(bos)
    gzip.write(bytes)
    gzip.close
    bos.toByteArray
  }

sent to the client:

def onMessage(bytes:Array[Byte], offset:Int, length:Int) {
  serverSocket.connection.sendMessage(compressBytes(bytes), offset, length)
}

旁注:我知道Sec-WebSocket-Extensions: permessage-deflate 是一种可能性,但尚未完全采用(我相信 Jetty 9 有)

谢谢

【问题讨论】:

    标签: sockets scala compression gzip


    【解决方案1】:

    使用 jetty,您只需放入一个 servlet 过滤器即可完成这项工作:http://www.eclipse.org/jetty/documentation/current/gzip-filter.html

    【讨论】:

    • 谢谢,我已经删除了那个过滤器,但我没有看到消息大小有任何差异(wiresshark/tcpdump)。然后我想我可能需要在 websocket 握手中传递一些东西(接受编码:gzip、deflate 或 Sec-WebSockets-Extensions 标头)。关于如何强制 Jetty 压缩网络套接字流量的任何想法?
    • 过滤器是 GzipFilterorg.eclipse.jetty.servlets.GzipFiltermimeTypes text/html,text/plain,text/xml,application/xhtml+xml,text/css,application/javascript,image/svg+xml
    猜你喜欢
    • 1970-01-01
    • 2020-10-06
    • 1970-01-01
    • 2011-08-07
    • 2021-06-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多