如何在MessageWebsocket升级请求中使用Sec-Websocket-Extensions

时间:2016-12-13 22:14:17

标签: c# .net websocket uwp

我需要使用messagewebsocket,但是文档说SetRequestHeader方法不支持sec-websocket-extensions。我需要接收的数据作为单个入站websocket数据包整体发送。

初始http标头需要sec-websocket-key和-version值。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

  

初始http标头需要sec-websocket-key和-version值。

要通过WebSocket连接到服务器,客户端必须首先向服务器发送打开握手。 Sec-WebSocket-Key头部字段用于WebSocket打开握手,必须包含它。如果没有此字段,MessageWebSocket将无法成功连接服务器。实际上,MessageWebSocket API已经将此字段设置为标题。您无需设置请求标头。您可以使用Fiddler抓取MessageWebSocket发送的获取请求,并在标头中看到Set-WebSocket-KeySet-WebSocket-Version。  enter image description here

由于此头字段的Sec-WebSocket-Key值必须是由随机选择的16字节组成的随机数,并且必须为每个连接随机选择随机数,因此该头字段不得出现多次HTTP请求,所以我们不能再设置它。但是您可以通过以下代码设置另外Set-WebSocket-Version,但我认为您不需要这样做。

 messageWebSocket.SetRequestHeader("Sec-WebSocket-Verson", "666");

有关WebSocket协议的详细信息,请参阅RFC6455。有关如何在UWP应用中使用WebSocket的详细信息,请参阅official sample。此示例包含服务器端和客户端,用于测试。