Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/395.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 信号器-WebSocket握手期间出错:意外响应代码:504_Javascript_Signalr_Signalr.client - Fatal编程技术网

Javascript 信号器-WebSocket握手期间出错:意外响应代码:504

Javascript 信号器-WebSocket握手期间出错:意外响应代码:504,javascript,signalr,signalr.client,Javascript,Signalr,Signalr.client,我正在尝试连接signalr hub,但javascript中出现以下错误: WebSocket connection to 'ws://dev:777/signalr/connect?transport=webSockets&clientProtocol=1.5&connectionToken=%2BRUC9XodaU4R3Wn3BSLfhZXxLqeLj9fp4XlLJSsxrc36dFuEo6O9GOIGYMdsgSeswY2DTzzJe9qCe9JnqgjwusbYROx

我正在尝试连接signalr hub,但javascript中出现以下错误:

WebSocket connection to 'ws://dev:777/signalr/connect?transport=webSockets&clientProtocol=1.5&connectionToken=%2BRUC9XodaU4R3Wn3BSLfhZXxLqeLj9fp4XlLJSsxrc36dFuEo6O9GOIGYMdsgSeswY2DTzzJe9qCe9JnqgjwusbYROxjkY%2B6d9FD4MVpox4FLEqNzCF5Y%2BOqrY5ndNs%2FRl7aOoKIYelpGmerXj4mdw%3D%3D&connectionData=%5B%7B%22name%22%3A%22machinehub%22%7D%5D&tid=5' failed: Error during WebSocket handshake: Unexpected response code: 504
然后在控制台中

Could not connect. Invocation of StartMachine failed. Error: No transport could be initialized successfully. Try specifying a different transport or none at all for auto initialization.
我正在使用这样的代码从hub调用我的方法,其中:

 self.Run = function (action, parameters, callbacks) {
    try {
        var connection = $.hubConnection();
        connection.logging = self.Debug;
        var hub = connection.createHubProxy(self.Name);

        registerConnectionEvents(connection);
        registerEvents(hub, callbacks);

        connection.start({ transport: ['webSockets'] })
            .done(function () {
                self.debug("Now connected!");

                hub.invoke.apply(hub, $.merge([action], parameters)).fail(function (error) {
                    var msg = 'Invocation of ' + action + ' failed. ' + error;
                    self.debug(msg);
                });                   
            })
            .fail(function (error) {
                var msg = 'Could not connect. Invocation of ' + action + ' failed. ' + error;
            self.debug(msg);
        });

        return true;
    }

当我在VisualStudio中使用signalr运行我的MVC5应用程序时,一切都很好。在windows Server 2012上发布到IIS8后,它无法通过信号r中的web套接字进行连接。我试图关闭两个防火墙进行测试,但没有成功。你能帮我解决那个问题吗?当然,我阅读了该页面上的所有内容

为了让Signar能够正确使用WebSocket,您必须确保客户端和服务器都支持WebSocket。如果本地测试工作正常,那么您的浏览器可能已经支持它了

Windows Server 2012支持Signal,但您需要确保已启用websockets功能:

如果已启用此功能,请尝试回收应用程序池(或重置IIS)



如果回收/重置还不够,那么您可能在服务器和客户端之间有其他东西,如代理服务器或另一个安全层,如网络防火墙(您可能无法访问),它可能存在于企业环境中,或者在像Amazon这样的地方托管的服务器上,可能会阻塞端口。

我已经安装了WebSocket协议,但我的signal r仅在具有长池的Generate代理中工作。我不知道为什么要重置websocket。@MarekBar您使用的是什么浏览器?安装websocket后,是否尝试重新启动服务器?这应该不是必需的,但我们永远不知道…请参阅线程以了解一些附加的先决条件。特别是,
似乎在Web.config文件中是必需的。这对我来说很有用。我收到400个错误的响应格式异常。在安装Websocket协议之后,它为me@ShahidIqbal很高兴听到,考虑一下投票:答案: