通过网络套接字手动 GZIP 数据



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

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

我知道根据这个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 有它)

谢谢

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

最新更新