gpt4 book ai didi

.net - 带有 permessage-deflate 的 IIS 8 WebSockets

转载 作者:行者123 更新时间:2023-12-01 01:57:59 25 4
gpt4 key购买 nike

我正在尝试启用 WebSocket 扩展 permessage-deflate在 IIS 8 中,但到目前为止还没有运气。看来,IIS 不支持任何扩展并且不响应 Sec-WebSockets-Extension标题。

我试图通过 Response.Headers.Add("Sec-WebSockets-Extension", "permessage-deflate; client_no_context_takeover; server_no_context_takeover") 手动发送它并通过 DeflateStream 进行压缩/解压在发送之前/接收之后手动,但是 WebSocket 的接收方法失败了。

我还尝试将 WebSocket 手动实现为 OWIN 中间件(在库 vtortola 的帮助下),但 IIS 一直关闭我的 InputStream并且无法读取数据。

有没有人成功启用此功能?

最佳答案

恐怕不能通过System.Web.WebSockets .
https://www.rfc-editor.org/rfc/rfc7692#section-6
尽管您可以为 deflate 模式指定 HTTP header ,但消息需要激活位 RSV1 才能被识别为压缩:

This document allocates the RSV1 bit of the WebSocket header for PMCEsand calls the bit the "Per-Message Compressed" bit. On a WebSocketconnection where a PMCE is in use, this bit indicates whether amessage is compressed or not.


所以即使你压缩了有效载荷,因为消息头没有压缩位,接收者仍然会尝试读取未压缩。一旦你通过HTTP升级机制协商了deflate模式,你仍然可以一起发送压缩和未压缩的消息,这是因为deflate对于小负载无效,因此有些消息可能不值得压缩。
也就是说,由于 ASP.NET 中的 WebSocket API 不允许您制定消息选项,因此恐怕无法做到这一点。
现在,关于 OWIN。我不得不说我没有探索过这条路,但是,我怀疑这是可能的,至少在与 HTTP 相同的端口中与 IIS8 集成,这可能是您想要做的。

关于.net - 带有 permessage-deflate 的 IIS 8 WebSockets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38933815/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com