我在ASP上使用带有JS-client (WebSocket传输)的Signalr v2.0.2。. NET 4.5站点和IIS-8(启用WebSockets)。经过负载测试(使用Selenium),我可以在任何浏览器的控制台看到下一个错误(***是我们的域名)。
[20:23:46 GMT+0400(俄罗斯标准时间)]信号:连接到websocket端点wss:///连接?运输= webSockets&连接…6 gkcou % 3 d&状态= 1,connectionData = % 5 b % 7 b % 22名% 3 22% % 22聊天7 d % 5 d&% 22%; tid = 1"。projects-FK0ZHh5_zUo_6I0Z725jUg2.js?ver=7.627:54 WebSocket连接来wss:///signalr/连接?运输= webSockets&连接…6 gkcou % 3 d&状态= 1,connectionData = % 5 b % 7 b % 22名% 3 22% % 22聊天7 d % 5 d&% 22%; tid = 1"WebSocket握手过程中出现错误:502
我总是得到这个错误,即使完成负载测试。我从来没有看到过这个错误,我不知道这是为什么。
查看:http://www.infoq.com/articles/Web-Sockets-Proxy-Servers
这几乎肯定是由于没有使用https (SSL)。纯http上的Websocket很容易受到中间代理(通常是透明的)的攻击,在http层操作会破坏连接。
这在蜂窝网络或办公网络中很常见,这些网络可能使用多个无线连接,并通过代理将http请求跨连接传播。
避免这种情况的唯一方法是始终使用SSL -这给websocket最好的工作机会。