我使用jquery.signalR-2.2.0.js
进行信号r连接。
我有以下代码
var connection = $.hubConnection();
var proxy = connection.createHubProxy(hubName);
connection.qs = { 'groupId': groupId };
proxy.on('connected', function () { });
connection.logging = true;
connection.stop();
connection.transportConnectTimeout = 5000;
connection.start({ transport: ['webSockets', 'longPolling'] }).done(function () {
console.log("Connected, transport = " + connection.transport.name);
})
.fail(function () { console.log('Could not Connect!'); });
现在问题,当我访问我的网站通过chrome使用域名,我得到以下错误:
WebSocket连接到'ws://xyz/signalr/connect?transport=webSockets&clientProtocol=1.5&groupId=0011600003&connectionToken=nzZP7FOeqXGWVO9gqRZJI3Kl6NBBV% 2Bb8ExCssRESg4et5mjJ1pQ%2Bb% 2bmfpy4nu0amw9ki7pbzostljzqxlle7 %2FIqdHj%2Bd7sYpd8nGwA7tMaPBHYxpTt7%2FvbA%3D%3D&connectionData=%5B%7B%22name%22%3A% 22spotterenhancethub %22%7D%5D&tid=3' failed: HTTP认证失败;start @ jquery.signalR-2.2.0.min.js:8start @ jquery.signalR-2.2.0.min.js:8d @ jquery.signalR-2.2.0.min.js:8d @ jquery.signalR-2.2.0.min.js: 2fireWith @ jquery-2.2.3.min.js:2z @ jquery-2.2.3.min.js:4(匿名函数)@ jquery-2.2.3.min.js:4jquery.signalR-2.2.0.min.js: 8
[14:02:22 GMT-0400(东部夏令时)]SignalR: Websocket closed。jquery.signalR-2.2.0.min.js: 8
[14:02:22 GMT-0400(东部夏令时)]SignalR: Closing the Websocket。jquery.signalR-2.2.0.min.js: 8
[14:02:22 GMT-0400(东部夏令时)]SignalR: webSockets transport failed to connect试图撤退。jquery.signalR-2.2.0.min.js: 8
[14:02:22 GMT-0400(东部夏令时)]SignalR: longPolling transport starting.
同样,这也适用于服务器&域名通过Firefox。唯一的问题是在Chrome &域名。
注意:我正在使用AD - windows身份验证
OS: Windows 10
我在Chrome中有奇怪的错误,但它们只发生在我的网站通过http服务时;您的错误表明您的网站上正在发生的事情,因为错误中存在不安全的ws://
协议。尝试通过https为您的网站提供服务;这应该升级您的连接到wss://
,并可能解决您的问题与Chrome。
我遇到了一个类似的问题。在客户端和服务器上使用SignalR 2.2.2时,消息突然停止通过。客户端或服务器上没有错误。只是无声的失败。事实证明,当我的页面通过https加载时,SignalR也必须通过安全连接。在本地测试时,我的网站使用http://localhost,然后必须通过不安全的连接连接到SignalR。
现在我有两个配置文件,LOCAL.js和PROD.js。其中有一行代码,指示要使用的适当的SignalR端点。环境变量决定在web服务器启动时加载哪个文件。
进一步,我可以允许SignalR客户端确定最佳连接方法。它支持Chrome、Firefox、Safari和IE。好运!