Sockets 通过websocket手动GZIP数据?

Sockets 通过websocket手动GZIP数据?,sockets,scala,compression,gzip,Sockets,Scala,Compression,Gzip,我有一个web套接字代理,它接受消息并将消息传递给客户端浏览器和Flash 在尝试优化的过程中,我希望通过web套接字连接GZIP传输数据。这是可能的,和/或有哪些其他方法可以做到这一点 我知道有一个WebSocket扩展正在根据StockOverflow问题进行工作 我目前在Scala/Jetty应用程序中的做法: def compressBytes(bytes:Array[Byte]) = { val bos = new ByteArrayOutputStream val g

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

在尝试优化的过程中,我希望通过web套接字连接GZIP传输数据。这是可能的,和/或有哪些其他方法可以做到这一点

我知道有一个WebSocket扩展正在根据StockOverflow问题进行工作

我目前在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)
}
旁注:我知道:permessage deflate是一种可能性,但我相信尚未完全采用Jetty 9


谢谢

使用jetty,您只需插入一个servlet过滤器即可完成此项工作:

谢谢,我已经插入了该过滤器,但我没有看到消息大小wireshark/tcpdump有任何差异。然后我想我可能需要在websocket握手接受编码中传递一些东西:gzip、deflate或Sec websocket扩展头。有没有关于如何强制Jetty对web套接字流量进行gzip的想法?过滤器是GzipFilter org.eclipse.Jetty.servlets.GzipFilter mimeTypes text/html、text/plain、text/xml、application/xhtml+xml、text/css、application/javascript、image/svg+xml