2

我正在 IIS 7.5 下测试 SignalR(1.1.0) Chat 示例。

我正在尝试从不同的 webapp 连接到我的 SignalR webapp(跨域)。

我已经在我的 web.config 中进行了跨域配置,这在 asp.net 开发服务器中运行良好,并且在 global.asax 上启用了 cors。

但是,当我将此项目部署到 IIS 7.5 时,这不起作用。然后我注意到它只适用于 IE 8,不适用于 Firefox。

我进行了如下连接:

        var connection = $.hubConnection('http://my.webserver.ip/sincronismoSR'),
            chatHubProxy = connection.createHubProxy('chatHub');

        connection.start().done(function() {
                $('#sendmessage').click(function () {
                chatHubProxy.invoke('Send', $('#displayname').val(), $('#message').val());
                $('#message').val('').focus();
            });
        });

我查看了发出的请求,它得到了 200 响应,但答案是空的。

4

2 回答 2

5

Claudio,我们在一个项目中使用 SignalR,它工作得非常好。不幸的是,我的研究做得不够好。当浏览器支持它时,我认为 SignalR 是 websockets,但事实是我们从来没有 websockets,因为我们在 2008 R2 服务器上运行 .NET 4.0。

SignalR websocket 传输需要 .NET 4.5、IIS8、2012Server/Win8,这对于我们的项目来说是不可接受的(目前)。

我环顾四周,在 .NET 堆栈上找到了一些替代方案。最后我们决定使用 xsockets.NET ( http://xsockets.net ) 并且从那以后没有回头。从 SignalR 迁移到 xsockets 真的很容易,而且 xsockets 在所有平台上都支持 websocket。还支持单声道。

唤醒我们的是 signalr 和 xsocket 之间的比较:http: //xsockets.net/xsockets-vs-signalr

不过 SignalR 上没有阴影。这是一个不错的选择,但由于服务器要求,它不适合我们。糟糕的是,社区似乎一直认为 SignalR 是实时的。但正如我所说,我们只能责怪自己,因为我们没有阅读足够好的文档并且浪费了很多时间:(

祝你好运

于 2013-10-31T06:18:23.677 回答
1

我找到了解决方案,但我不明白为什么,当我使用 Firefox 时,如果我没有设置,它就不会选择正确的传输方式。

    var connection = $.hubConnection('http://my.webserver.ip/sincronismoSR'),
        chatHubProxy = connection.createHubProxy('chatHub');

    connection.start({ transport: ['webSockets', 'longPolling'] }).done(function() {
            $('#sendmessage').click(function () {
            chatHubProxy.invoke('Send', $('#displayname').val(), $('#message').val());
            $('#message').val('').focus();
        });
    });

所以,这个{ transport: ['webSockets', 'longPolling'] }配置解决了我的问题。

于 2013-10-29T22:43:20.397 回答