我在 gzip 压缩和解压方面有问题。 需要从 wss 流发送和接收消息。
大家好
从 wss 流中,我得到 gzip base64 编码的消息。 我找到了一个可以正常工作并解码这些消息的函数:
Public Function DecompressGzip(ByVal bytes As Byte()) As String
Using ms = New MemoryStream(bytes)
Using ds = New GZipStream(ms, CompressionMode.Decompress)
Using sr = New StreamReader(ds, Encoding.UTF8)
Return sr.ReadToEnd()
End Using
End Using
End Using
End Function
还有一个压缩字符串的函数:
Public Function CompressGzip(ByVal bytes As Byte()) As Byte()
Using memoryStream = New MemoryStream()
Using gzipStream = New GZipStream(memoryStream, CompressionLevel.Optimal)
gzipStream.Write(bytes, 0, bytes.Length)
End Using
Return memoryStream.ToArray()
End Using
End Function
我的演示代码:
Dim b64 As String = "eJx1U01v2zAM/S86q5i+bec2FB02YFiLdNil2EGzmUSoI2WSnGwL+t9HeknbZdiNenykSb7nI9v5umELViDvQw9vBvBjYZzVnztA+EAxYUv4PkGpbHFkfYql5qnHR5zGkWOLNXIFEtPWh/hhwEKNdfCjH6cBrn2FdcoBCls8NK3spNCSa2uFaISUXDqjrbAYtM4Jx5XUotXEaY3SggJnVGMosETp2rmBdI0zp0ZubiQ7J42biVJ0ys40IbpOcW1EaxUBytq2VbxphJr7yE4Z6eYMfs85rvFbjaKGWmCy4VJ1Vjgrv3IW4r8rIbzLeLvPeDJ6CwQGGKtf+kiHeZBYjluZxrTameacvoPcQ6xnlrvgFD9CweTjmXAl+RXN0E85v6ozTlxUbkNc+hrimi2whoXyMR1m7VaoLbwAt6sV5Ffo7YTQfU394zNYQx3hHnzuySSoaaCR1nAT/bcRUGg0wlz7LowV8gW8+gPmVEP/3LLgYCN88TngjCmeuRtflrAPgI57meguhy3ckI1K2OOyp8R2KvW938Pbrf+V4t9rUO5T+m+6pFxJKLbAywwo4+mMs2EPPsMmTQWuUxwCTUd6onm44ZYkgUpnRfDIaFRshL5/Qv0h380/gbT0DHgBjf5UnO0hl3lL/fQbVw4L0Q=="
Dim bu As Byte() = Convert.FromBase64String(b64)
Dim decompressed As String = DecompressGzip(bu)
Console.WriteLine(decompressed)
Console.WriteLine("Original: " & b64)
Console.WriteLine("New: " & Convert.ToBase64String(CompressGzip(Encoding.UTF8.GetBytes(decompressed))))
如果我解码一条消息并再次对其进行 base64 编码(压缩),结果是不同的:
{"path":"service/deals","type":"ws","dealRequest":{"construct":null,"page":0,"domainId":"3","excludeCategories":[78191031,355007011,16435051,186606,213083031,84230031,64274031,5866098031,3167641,355006011,11961464031,10925031,300992,340852031,255882,77028031,192416031,284266,327472011,301927,12950651],"includeCategories":[],"priceTypes":[0],"deltaRange":[1950,2147483647],"deltaPercentRange":[60,2147483647],"salesRankRange":[-1,-1],"currentRange":[4600,2147483647],"minRating":-1,"isLowest":false,"isLowestOffer":false,"isOutOfStock":false,"titleSearch":"","isRangeEnabled":true,"isFilterEnabled":true,"filterErotic":false,"singleVariation":true,"hasReviews":false,"isPrimeExclusive":false,"mustHaveAmazonOffer":false,"mustNotHaveAmazonOffer":false,"sortType":1,"dateRange":"3","warehouseConditions":[2,3,4,5],"settings":{"viewTyp":0},"perPage":150},"id":33162,"version":3}
Original: eJx1U01v2zAM/S86q5i+bec2FB02YFiLdNil2EGzmUSoI2WSnGwL+t9HeknbZdiNenykSb7nI9v5umELViDvQw9vBvBjYZzVnztA+EAxYUv4PkGpbHFkfYql5qnHR5zGkWOLNXIFEtPWh/hhwEKNdfCjH6cBrn2FdcoBCls8NK3spNCSa2uFaISUXDqjrbAYtM4Jx5XUotXEaY3SggJnVGMosETp2rmBdI0zp0ZubiQ7J42biVJ0ys40IbpOcW1EaxUBytq2VbxphJr7yE4Z6eYMfs85rvFbjaKGWmCy4VJ1Vjgrv3IW4r8rIbzLeLvPeDJ6CwQGGKtf+kiHeZBYjluZxrTameacvoPcQ6xnlrvgFD9CweTjmXAl+RXN0E85v6ozTlxUbkNc+hrimi2whoXyMR1m7VaoLbwAt6sV5Ffo7YTQfU394zNYQx3hHnzuySSoaaCR1nAT/bcRUGg0wlz7LowV8gW8+gPmVEP/3LLgYCN88TngjCmeuRtflrAPgI57meguhy3ckI1K2OOyp8R2KvW938Pbrf+V4t9rUO5T+m+6pFxJKLbAywwo4+mMs2EPPsMmTQWuUxwCTUd6onm44ZYkgUpnRfDIaFRshL5/Qv0h380/gbT0DHgBjf5UnO0hl3lL/fQbVw4L0Q==
New: H4sIAAAAAAAEAHVTTW8TMRD9Lz67wt+7mxuqikBCNEorLlUPZjNprG7sYHsToOp/Z8Y0bSniZr95M5558/zA9r5u2YIVyIcwwrs1+KkwzurPPSB8pDNhK/g+Q6ls8cDGFEvN84iXOE8TxxJ3yBVITDsf4qc1JmrMgx/jNK/h3Fe4SzlAYYubrpeDFFpyba0QnZCSS2e0FRYPvXPCcSW16DVxeqO0oIMzqjN0sEQZ+lZAus6Zp0KuFZKDk8Y1ohSDso0mxDAoro3orSJAWdv3inedUK2OHJSRrkXwPee4xrc6RQW1wGDHpRqscFbechbivyMhvM+o3TVKRndxS5JN1a98JGFuJKbjVKYzvXamO4WXkEeI9cRybzjFT1AweH8inEl+Rj2Mc86v8owTbzJ3Ia58DfGOLTCHhfI5HdvuNrhbeAEuNxvIr9DLGaGrmsb7Z7CGOsEV+DySSRix2rsX0X+bABeNRmi5H8JUIb+BN3/AnGoYn0sWbGyCrz4H7DHFE3frywoOAdBxLx0tc9jBBdmohAM8B3ZzqR/9Ad7v/K8U/x6DYl/Sf8Ml5XrdvI3KrHGNTzI2wx59hm2aC5ynuA7UHe0TzcMNt7QSqCRroV9ArWIh9P0j7h/ysn0CaekaUAGN/lScHSCXNqV+/A3oTJx4bAMAAA==
你有解决这个问题的想法吗? 字节数组在解压和重新压缩后似乎有所不同。 我需要他们将其发送回 wss 流。
充满希望和感激的问候:)