使用 C# 的 websocket 握手请求

Posted

技术标签:

【中文标题】使用 C# 的 websocket 握手请求【英文标题】:websocket handshake request using C# 【发布时间】:2015-09-13 13:09:27 【问题描述】:

我正在使用 C# 编写一个 websocket 客户端。但我不知道如何在 C# 中将 websocket 握手请求发送到服务器以及如何生成 sec-websocket-key。

【问题讨论】:

【参考方案1】:

客户端请求示例如下所示。

GET /chat HTTP/1.1
Host: example.com:8000
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Key: dGhlIHNhbXBsZSBub25jZQ==
Sec-WebSocket-Version: 13

服务器响应示例如下所示。

HTTP/1.1 101 Switching Protocols
Upgrade: websocket
Connection: Upgrade
Sec-WebSocket-Accept: s3pPLMBiTxaQ9kYGzzhZRbK+xOo=

看sample websocket server code from mozilla.

要在客户端生成密钥,您可以使用随机生成器。

String secWebSocketKey = Convert.ToBase64String(Encoding.UTF8.GetBytes("WebSocket rocks!"));

【讨论】:

以上是关于使用 C# 的 websocket 握手请求的主要内容,如果未能解决你的问题,请参考以下文章

C# WebSocket - 握手期间客户端没有响应

Opera 12 中的 WebSocket 握手失败(错误请求)

Swoole入门 - WebSocket 服务

探讨Netty获取并检查Websocket握手请求的两种方式

websocket协议握手详解

Web-Socket