2011-10-08 124 views
1

正如在草案提到,WebSocket协议旨在扩大,我们可以使用已经注册的扩展。例如扩展名为的deflate-application-data可以在数据传输过程中做一些压缩工作,详情为here。那么,它在设计上可能有点麻烦,但这不是重点。如何添加扩展头的WebSocket,使其支持压缩

我的问题是,我们如何使用这些扩展?我们创建一个这样的websocket:

var socket = new WebSocket('ws://game.example.com:12010/updates'); 

Websocket api似乎不提供这样的机会来添加或修改websocket协议标头。目前websocket api不支持扩展吗?

+0

Websockets的数据包很小,压缩会产生比未压缩的更长的数据长度,除非您发送和接收更大的数据块(大约150字节)。 – Zaffy

回答

1

这是不是你在JavaScript代码中明确指定一个扩展。如果浏览器支持此扩展程序,它会自动将deflate-frame令牌添加到Sec-WebSocket-Extensions标头。如果服务器支持它,那么它将在其响应中指定相同的标记。但是,我不确定是否有任何浏览器已经支持这个扩展,很可能不是。至少Firefox绝对不支持从Firefox 6开始支持deflate-stream

+0

谢谢,我得到了扩展如何工作。我测试了firefox 6,发现它确实将deflate-stream头部发送给服务器。但为什么你说“它绝对不”?这是否意味着firefox只是发送一个deflate-stream头文件,但它的有效载荷根本没有被压缩?我找不到任何支持deflate的websocekt服务器来检查当前的结果。你能提供任何高级信息链接吗?再次感谢〜:) – changchang

+0

@changchang:'deflate-stream'和'deflate-frame'是两回事。 Firefox支持前者,但不支持后者。 –