我需要使用messagewebsocket,但是文档说SetRequestHeader方法不支持sec-websocket-extensions。我需要接收的数据作为单个入站websocket数据包整体发送。
初始http标头需要sec-websocket-key和-version值。
我该如何解决这个问题?
答案 0 :(得分:1)
初始http标头需要sec-websocket-key和-version值。
要通过WebSocket
连接到服务器,客户端必须首先向服务器发送打开握手。 Sec-WebSocket-Key
头部字段用于WebSocket
打开握手,必须包含它。如果没有此字段,MessageWebSocket
将无法成功连接服务器。实际上,MessageWebSocket
API已经将此字段设置为标题。您无需设置请求标头。您可以使用Fiddler抓取MessageWebSocket
发送的获取请求,并在标头中看到Set-WebSocket-Key
和Set-WebSocket-Version
。
由于此头字段的Sec-WebSocket-Key
值必须是由随机选择的16字节组成的随机数,并且必须为每个连接随机选择随机数,因此该头字段不得出现多次HTTP请求,所以我们不能再设置它。但是您可以通过以下代码设置另外Set-WebSocket-Version
,但我认为您不需要这样做。
messageWebSocket.SetRequestHeader("Sec-WebSocket-Verson", "666");
有关WebSocket
协议的详细信息,请参阅RFC6455。有关如何在UWP应用中使用WebSocket
的详细信息,请参阅official sample。此示例包含服务器端和客户端,用于测试。