SignalR无法使用Chrome上的WebSocket连接到服务器

问题描述 投票:1回答:2

我使用jquery.signalR-2.2.0.js进行signalR连接。

我有以下代码

    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 /连接运输=的WebSockets&clientProtocol = 1.5&的groupId = 0011600003&connectionToken = nzZP7FOeqXGWVO9gqRZJI3Kl6NBBV%2FSXdgFWR7hvnsNooMr6Qh6vc7YOMzl%2Bb8ExCssRESg4et5mjJ1pQ%2BB%2BMFPy4nu0aMw9kI7pBzOSTLjzQXLlEVe%2FIqdHj%2Bd7sYpd8nGwA7tMaPBHYxpTt7%2FvbA%3D%3D&connectionData =%5B%7B%22name%? 22%3A%22spotterenhancementhub%22%7D%5D&tid = 3'失败:HTTP身份验证失败;没有有效的凭证availablestart @jquery.signalR-2.2.0.min.js:8start @jquery.signalR-2.2.0.min.js:8d @jquery.signalR-2.2.0.min.js:8success @jquery.signalR -2.2.0.min.js:8i @jquery-2.2.3.min.js:2fireWith @jquery-2.2.3.min.js:2z @jquery-2.2.3.min.js:4(匿名函数) @ jquery-2.2.3.min.js:4 jquery.signalR-2.2.0.min.js:8

[格林威治标准时间-0400(东部夏令时间)14:02:22] SignalR:Websocket关闭。 jquery.signalR-2.2.0.min.js:8

[格林威治标准时间-0400(东部夏令时间)14:02:22] SignalR:关闭Websocket。 jquery.signalR-2.2.0.min.js:8

[格林威治标准时间-0400(东部夏令时间)14:02:22] SignalR:webSockets传输无法连接。试图退缩。 jquery.signalR-2.2.0.min.js:8

[格林威治标准时间-0400(东部夏令时间)14:02:22] SignalR:longPolling运输开始。

此外,这与通过Firefox的服务器和域名完美配合。唯一的问题是Chrome和域名。

注意:我正在使用AD - Windows身份验证

操作系统:Windows 10

javascript jquery google-chrome websocket signalr
2个回答
0
投票

我在Chrome中遇到了奇怪的错误,但它们只发生在我的网站通过http提供时;您的错误表明您的网站上发生了什么,因为错误中的qsecxswpoi协议不安全。尝试通过https服务您的网站;这应该升级您与ws://的连接,并可能解决您的Chrome问题。


0
投票

我遇到了类似的问题。在客户端和服务器上使用SignalR 2.2.2,消息突然停止通过。客户端或服务器上没有错误。只是沉默的失败。事实证明,当我的页面加载到https上时,SignalR也必须通过安全连接。在本地测试时,我会在我的网站上使用wss://,然后必须通过不安全的连接连接到SignalR。

所以现在我有两个配置文件,LOCAL.js和PROD.js.它们内部是一行代码,表示要使用的相应SignalR端点。环境变量确定启动Web服务器时加载的文件。

此外,我可以允许SignalR客户端确定最佳连接方法。它适用于Chrome,Firefox,Safari和IE。祝好运!

© www.soinside.com 2019 - 2024. All rights reserved.