如何在 WCF websocket 双工 nethttpsbinding 上启用 gzip 压缩

How can I enable gzip compression on WCF websocket duplex nethttpsbinding

我只想对以下绑定启用 gzip 压缩。

这是我当前配置文件中的内容。

  <netHttpsBinding>
    <binding name="MutualCertificateBinding" maxReceivedMessageSize="9223372036854775807" receiveTimeout="00:20:00" sendTimeout="00:20:00" transferMode="Streamed" messageEncoding="Binary">
      <security mode="Transport">
        <transport clientCredentialType="Certificate" />
      </security>
      <webSocketSettings transportUsage="Always" />
    </binding>
  </netHttpsBinding>

According to MSDN从 4.5 开始,WCF 中的 tcp、http 和 https 都可以压缩,我使用的是 4.5.2。

请记住,我实际上使用的是带有回调合同的 WCF 合同,因此需要双工。

我很高兴用自定义绑定替换我的绑定,因为我控制双方并且它们都是 .net,但我一直无法弄清楚如何创建任何支持 websockets 的自定义绑定。

如有任何帮助,我们将不胜感激。

好吧,我一直在尝试很多不同的东西,这就是我最终想出的,而且它正在工作。 :)

    <binding name="GZipMutualCertificateBinding" receiveTimeout="00:20:00" sendTimeout="00:20:00">
      <binaryMessageEncoding compressionFormat="GZip" />
      <httpsTransport maxReceivedMessageSize="9223372036854775807" requireClientCertificate="true" transferMode="Streamed">
        <webSocketSettings transportUsage="Always" />
      </httpsTransport>
    </binding>

这是通过反复试验发现的,如果您发现任何不合适的地方,请告诉我。谢谢