我有一个SignalR 2.0服务器,托管在IIS7中,有一个javascript客户端,目前主要针对Chrome浏览器。
在没有跨域的情况下,SignalR传输是服务器发送的事件,它工作得很好,而且效率很高。
我使用Microsoft.Owin.Cors以建议的方式向服务器添加了CORS支持--这使得服务器能够跨域工作--然而,SignalR传输现在是长时间轮询;这将导致服务器上的负载更高,因为从服务器发送到客户端的SignalR消息非常频繁。
我真的很想让服务器发送的事件和CORS支持一起工作,从我对协议的理解来看,我看不出为什么不能这样做。有什么建议吗?在其他浏览器中,有谁在相同的情况下有运气吗?
发布于 2014-02-11 04:41:26
默认情况下,SignalR目前不尝试建立跨域SSE连接。
这个决定是在浏览器拥有兼容CORS的EventSource实现之前做出的,因此,甚至尝试建立跨域的SSE连接都被认为是浪费的。
从SignalR 2.0.3开始,默认情况下将尝试跨域SSE连接。
同时,您可以手动指定要尝试的传输方式以及尝试它们的顺序:
$.connection.hub.start({transport: ["webSockets", "serverSentEvents", "foreverFrame", "longPolling"]});http://www.asp.net/signalr/overview/signalr-20/hubs-api/hubs-api-guide-javascript-client#transport
https://stackoverflow.com/questions/21690060
复制相似问题