2014-02-12 19 views
0

我有一个Web套接字代理,接受消息并将它们传递给客户端(浏览器和Flash)。通过websocket手动执行GZIP数据?

在试图优化我希望GZIP数据,通过该网络套接字连接。这是可能的,和/或有什么其他方法可能适用于此?

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

我的斯卡拉/码头应用中电流的方法:

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-放气是一种可能性,但尚未完全通过(码头9有它,我相信)

感谢

回答

0

有了码头,你能把一个Servlet过滤器来完成这项工作:http://www.eclipse.org/jetty/documentation/current/gzip-filter.html

+0

谢谢,我已经丢弃的FIL但我没有看到消息大小(wiresshark/tcpdump)有任何区别。然后我想我可能需要在websocket握手中传递一些东西(accept-encoding:gzip,deflate或Sec-WebSockets-Extensions标头)。有关如何强制Jetty gzip网络套接字流量的任何想法? – binarygiant

+0

Filter是 GzipFilter <滤波器级> org.eclipse.jetty.servlets.GzipFilter ​​MIMETYPES text/html的,文本/无格式,文本/ xml,application/xhtml + xml,text/css,application/javascript,image/svg + xml binarygiant

相关问题