Using persistent connections and an ASP.NET JavaScript client, I am trying to connect to a sub-domain not the same as the one the page was served from.
ASP.Net Page
If switching from 0.5.1 to 0.5.2, you may have had the following:
$.connection.hub.start({ transport: 'longPolling', xdomain: true }, function () {...
Which can be changed to:
$.connection.hub.start({ jsonp: true }, function () {...
In Signalr2, you can use the pre-release of Microsoft.Owin.Cors, currently 3.0.0-rc1 as of writing this: Microsoft.Owin.Cors.
More information can be found here:
You need to do one of the following to make it work:
$.connection.hub.url = 'http://subdomain.domain.com/signalr';
, pointing to your subdomain.Enable cross domain on the server:
RouteTable.Routes.MapHubs(new HubConfiguration()
{
EnableCrossDomain = true
});
In the current version of SignalR, using the now separate CORS package, the API for this has changed to:
public void Configuration(IAppBuilder app)
{
app.Map("/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
{
};
map.RunSignalR(hubConfiguration);
});
}
See ASP.NET SignalR Hubs API Guide - JavaScript Client.
What really have solved my issue was:
1 - Add this to global.asax:
RouteTable.Routes.MapHubs(new HubConfiguration() {
EnableCrossDomain = true
});
2- Set up the web.config of my web project to enable the cross-domain:
<system.webServer> <httpProtocol> <customHeaders> <add name="Access-Control-Allow-Origin" value="*" /> <add name="Access-Control-Allow-Headers" value="Content-Type" /> </customHeaders> </httpProtocol> </system.webServer>
3- Then I change the implementation on my html, changing the $.connection() to as follow:
var connection = $.hubConnection('http://localhost.my:8081/signalr'); var chatHubProxy = connection.createHubProxy('chatHub');
Versions I'm using:
signalR-1.1.0
jquery.signalR-1.1.3.js
dot.net 4.0
var connection = $.connection('http://somecrossdomainurl/echo')
connection.start({ transport: 'longPolling', xdomain: true });
https://github.com/SignalR/SignalR/wiki/SignalR-JS-Client