繁体   English   中英

通过WebSocket从Safari 5.1.7连接到IIS 8

[英]Connecting to IIS 8 from Safari 5.1.7 by WebSocket

我的IE,Chrome,Chrome androud,Opera,Firefox浏览器已通过WebSocket成功连接到IIS。 看一个例子:

来自客户端的握手如下所示:

GET /SimpleChatApplication/ChatHandler.ashx HTTP / 1.1

主持人:pc2014:80

连接:升级

语法:无缓存

缓存控制:无缓存

升级:websocket

来源:http // pc2014

安全WebSocket版本:13

用户代理:Mozilla / 5.0(Windows NT 6.3; WOW64)AppleWebKit / 537.36(KHTML,例如Gecko)Chrome / 45.0.2454.85 Safari / 537.36

接受编码:gzip,deflate,sdch

接受语言:ru,en; q = 0.8,en-US; q = 0.6

Sec-WebSocket-密钥:rrKYVVaPKmMnINtsUh9BNg ==

Sec-WebSocket-Extensions:permessage-deflate; client_max_window_bits

来自服务器的握手如下所示:

HTTP / 1.1 101交换协议

缓存控制:私有

升级:Websocket

服务器:Microsoft-IIS / 8.5

X-AspNet版本:4.0.30319

Sec-WebSocket-接受:IQ / qcgyu36N / d1p0JEU7nZ3W8Vo =

连接:升级

X-Powered-by:ASP.NET

日期:2015年9月16日星期三23:54:37 GMT

但是,如果我使用Safary Bowser,则:

来自客户端的握手如下所示:

GET /SimpleChatApplication/ChatHandler.ashx HTTP / 1.1

升级:WebSocket

连接:升级

主持人:pc2014:80

来源: http:// pc2014

Sec-WebSocket-Key1:N9 Q32K \\ 275z 5z <1 = 2 c

Sec-WebSocket-Key2:-1 z 6#HA g)1Aue0483 420d

来自服务器的握手如下所示:

HTTP / 1.1 200 OK

缓存控制:私有

服务器:Microsoft-IIS / 8.5

X-AspNet版本:4.0.30319

X-Powered-by:ASP.NET

日期:2015年9月16日,星期三23:56:19 GMT

内容长度:0

HTTP / 1.1 400错误请求

内容类型:text / html; 字符集= us-ascii

伺服器:Microsoft-HTTPAPI / 2.0

日期:2015年9月16日,星期三23:56:19 GMT

连接方式:关闭

内容长度:326


错误的请求

错误请求-无效动词

HTTP错误400。请求谓词无效。


请向我解释错误在哪里? 或Safary发送不正确的请求,或IIS错误识别。

我已使用www.websocket.org网站进行测试。 在测试之前,我已将服务器地址从“ ws://echo.websocket.org”替换为我的IIS地址。

似乎Safari浏览器实现了WebSocket标准的旧版本,名为hybi

显然,ASP.NET仅支持确定的RFC6455 那是主要浏览器也使用的版本。

使用SignalR库。 ASP.NET SignalR是ASP.NET开发人员的新库,它使向应用程序中添加实时Web功能变得异常简单。 什么是“实时网络”功能? 可以让您的服务器端代码实时将内容推送到连接的客户端。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM