我有一个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