我在ASP.NET 4.5站点和IIS-8(启用WebSockets)上使用Signalr v2.0.2和JS-client(WebSocket传输)。在负载测试(使用Selenium)之后,我可以在任何浏览器的控制台中看到下一个错误(***是我们的域名)。
[GMT + 0400(俄罗斯标准时间)20:23:46] SignalR:正在连接 websocket端点 'WSS:///连接运输=的WebSockets&安培;连接... 6GkCoU%3D&安培;状态= 1&安培; connectionData =%5B%7B%22name%22%3A%22chat%22%7D%5D&安培; TID = 1'。 projects-FK0ZHh5_zUo_6I0Z725jUg2.js?ver = 7.627:54 WebSocket连接 至 'WSS:/// signalr /连接运输=的WebSockets&安培;连接... 6GkCoU%3D&安培;状态= 1&安培; connectionData =%5B%7B%22name%22%3A%22chat%22%7D%5D&安培; TID = 1' 失败:WebSocket握手期间出错:意外的响应代码: 502
即使在完成负载测试后,我总是会收到此错误。我从未见过这个错误,我不知道这个原因。它只能解决应用程序重启问题。
答案 0 :(得分:2)
检查出来:http://www.infoq.com/articles/Web-Sockets-Proxy-Servers
这几乎可以肯定是因为没有使用https(SSL)。普通http上的Websocket易受中间代理(通常是透明的)操作,在http层打破连接。
这在蜂窝网络或办公室网络上很常见,这些网络或办公室网络可能会使用多个无线连接与代理通过连接传播http请求。
避免这种情况的唯一方法是始终使用SSL - 这为websocket提供了最佳的工作机会。