C# Websocket、标题和排名

C# Websocket、标题和排名,c#,c#-4.0,websocket,C#,C# 4.0,Websocket,我试图调用外部websocket服务器,但它不工作,我有一个错误:非零hanshake 我正在c#应用程序中使用superwebsocket的客户端 我将(使用wireShark)发送的内容与一个使用javascript的示例进行了比较,我发现唯一的区别是标题中字段的排名 这可能是我问题的原因吗?我应该尊重球场的排名吗 附言:我按这个顺序寄出 GET / HTTP/1.1 Upgrade: WebSocket Connection: Up grade Sec-WebSocket-Key1: D

我试图调用外部websocket服务器,但它不工作,我有一个错误:非零hanshake

我正在c#应用程序中使用superwebsocket的客户端

我将(使用wireShark)发送的内容与一个使用javascript的示例进行了比较,我发现唯一的区别是标题中字段的排名

这可能是我问题的原因吗?我应该尊重球场的排名吗

附言:我按这个顺序寄出

GET / HTTP/1.1
Upgrade: WebSocket
Connection: Up grade
Sec-WebSocket-Key1:  DC1M 5VEEm 731
Sec-WebSocket-Key2: 7 tQG6 7540Q226
Host: 127.0.0.1
Origin: 127.0.0.1
Sec-WebSocket-Protocol: myProtocol
以及javascript发送的内容:

GET / HTTP/1.1
Host: 127.0.0.1:8080
Origin:  null
Sec-WebSocket-Key1: 3O45   82 4   ;Q 0 376
Connection: Upgrade
Sec-WebSocket-Key2: <361      6  W 12 Z152
Upgrade: WebSocket
Sec-WebSocket-Protocol: myProtocol
GET/HTTP/1.1
主持人:127.0.0.1:8080
来源:空
Sec-WebSocket-Key1:3O45 82 4;问题0 376
连接:升级

Sec-WebSocket-Key2:标题字段未排序。来自websocket协议草案17:


除了标题中字段的排名,似乎还有更多的差异。。。例如,“Connection”值不同,“Origin”值也不同,“Host”似乎在两个版本之间使用不同的端口。这些变化有什么不同吗?“连接:升级”中的空格会导致握手失败。这不是输入错误。您的服务器了解websocket协议的哪些变体?握手适用于较老的Hixie变体;这已被弃用,并在许多用途中被不兼容的Hybi版本所取代。感谢您的评论,对于连接字段,我在升级之间没有空格,这是一个错误:)。我使用的协议是hybi-00。下面是完整的错误消息:似乎正在服务,模式是0 libwebsocket\u parse sees解析完整的非零握手余数libwebsocket\u close\u和\u free\u会话:只是\u kill\u连接由于旧状态而没有回叫closed=1您有理由,我还检查了websocket协议hybi-00,其中提到订单没有意义
   After the leading line in both cases come an unordered set of header
   fields.  The meaning of these header fields is specified in Section 4
   of this document.  Additional header fields may also be present, such
   as cookies [RFC6265].  The format and parsing of headers is as
   defined in [RFC2616].