1

我目前正在尝试启动并运行一个简单的客户端\服务器 websocket 演示,并且我正在尝试使用C# Nugget 项目作为我的服务器。我可以通过 Netscape (v5.1.4) 连接到服务器,但不能通过 Chrome (v18.0.1) 连接,并且我已经将问题追溯到客户端握手。

Nugget 期望客户端握手采用以下格式,这正是 Netscape 发送它的方式:

预期的客户握手

另一方面,Chrome 的客户端握手看起来像这样:

chrome客户端握手

我已经强调了导致 Nugget 服务器出现问题的两个请求的差异 - sec-websocket 参数。

我猜测客户端握手的 Netscape 和 Chromes 实现是基于不同版本的 websocket 规范。 有没有人有更多关于这方面的信息?是否可以只添加代码来处理这两种类型的握手,或者是否已弃用其中一种?

欢迎任何见解,

詹姆士

资源:了解 Websocket 客户端握手

4

1 回答 1

2

看起来 Netscape 正在使用该协议的较旧的、已弃用的Hixie变体。Safari 也使用这个。Chrome 使用更现代的RFC 6455。您可以期望所有浏览器最终都使用 RFC 6455。

假设您想支持尽可能多的客户端类型,可以(确实正确)添加代码来处理这两种变体。请注意,握手后读取/写入的数据帧也会根据所使用的协议变体而变化。

于 2012-04-04T10:43:40.860 回答