Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/369.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何将扩展头添加到websocket以使其支持压缩_Javascript_Html_Websocket - Fatal编程技术网

Javascript 如何将扩展头添加到websocket以使其支持压缩

Javascript 如何将扩展头添加到websocket以使其支持压缩,javascript,html,websocket,Javascript,Html,Websocket,正如草案中提到的,websocket协议是为了扩展而设计的,我们可以使用已经注册的扩展。例如,扩展deflate应用程序数据可以在数据传输期间执行一些压缩工作,详细信息如下。嗯,它在设计上可能有点麻烦,但这不是重点 我的问题是我们如何使用这些扩展?我们创建一个websocket,如下所示: var socket = new WebSocket('ws://game.example.com:12010/updates'); Websocket api似乎不提供添加或修改Websocket协议头的

正如草案中提到的,websocket协议是为了扩展而设计的,我们可以使用已经注册的扩展。例如,扩展deflate应用程序数据可以在数据传输期间执行一些压缩工作,详细信息如下。嗯,它在设计上可能有点麻烦,但这不是重点

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

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

Websocket api似乎不提供添加或修改Websocket协议头的机会。websocket api当前是否不支持扩展?

这不是您在JavaScript代码中明确指定的扩展。如果浏览器支持此扩展,它将自动将
deflate frame
标记添加到
Sec WebSocket Extensions
标题中。如果服务器也支持它,那么它将在响应中指定相同的令牌。然而,我不确定是否有浏览器已经支持这个扩展,很可能没有。至少Firefox肯定不支持,即使它支持从Firefox6开始的
deflate stream

这不是您在JavaScript代码中明确指定的扩展。如果浏览器支持此扩展,它将自动将
deflate frame
标记添加到
Sec WebSocket Extensions
标题中。如果服务器也支持它,那么它将在响应中指定相同的令牌。然而,我不确定是否有浏览器已经支持这个扩展,很可能没有。至少Firefox肯定不支持,即使它从Firefox6开始就支持
deflate stream

谢谢,我现在知道了扩展的工作原理。我测试了Firefox6,发现它确实向服务器发送了deflate流头。但你为什么说“绝对不行”?这是否意味着firefox只发送一个deflate流头,但其负载根本没有被压缩?我目前找不到任何支持deflate的websocekt服务器来检查结果。你能提供任何高级信息链接吗?再次感谢~:)@changchang:
deflate stream
deflate frame
是两个不同的东西。Firefox支持前者,但不支持后者。谢谢,我现在了解了扩展的工作原理。我测试了Firefox6,发现它确实向服务器发送了deflate流头。但你为什么说“绝对不行”?这是否意味着firefox只发送一个deflate流头,但其负载根本没有被压缩?我目前找不到任何支持deflate的websocekt服务器来检查结果。你能提供任何高级信息链接吗?再次感谢~:)@changchang:
deflate stream
deflate frame
是两个不同的东西。Firefox支持前者,但不支持后者。WebSocket的数据包很小,压缩它会产生比未压缩更长的数据长度,除非您发送和接收更大的数据块(约150字节)。WebSocket的数据包很小,压缩它会产生比未压缩更长的数据长度,除非您发送和接收更大的数据块~150字节。