我在C#中編寫了一個WebSocket,並試圖實現permessage-deflate擴展。看來C#DeflateStream無法解壓從Chrome發送的消息有效載荷(版本36.0.1985.143米) - 我迄今爲止嘗試的唯一一個。嘗試解壓縮時,出現「塊長度與其補碼不匹配」消息。這不是RFC 1950,RFC 1951 2字節標題問題。WebSocket permessage-deflate C#
我已經使用C#中的DeflateStream壓縮相同的數據(字符串'Hello'),試圖查看壓縮數據的差異。奇怪的是,壓縮的Chrome有效載荷和C#壓縮數據完全相同,除了第一個字節!即使將示例壓縮字符串從'hello'更改爲其他任何內容,Chrome有效內容的第一個字節也始終比第一個字節小1。我可以簡單地在第一個字節中加1,並且解壓縮負載。
我發現了一個Compression Extensions for WebSocket草案,討論了這個問題,但並未解決C#的問題。
第8.2.3.1使用「你好」後的樣本串並顯示正確的壓縮的有效載荷: 0xf2 0x48 0XCD 0xc9 0xc9 0x07的0×00
第8.2.3.4然後繼續使用帶有放氣塊討論BFINAL設置爲1,其產生: 0xf3 0x48 0XCD 0xc9 0xc9 0x07的0×00 0×00
的0xf3數據是什麼的C#DeflateStream壓縮並沒有問題解壓縮。似乎在涉及BFINAL的算法中存在通縮選項,並且C#不提供此設置?
我希望有人可能會熟悉這個問題或知道如何解決這個問題。如果可能的話,我不想鏈接到第三方庫。
謝謝。