从另一台计算机发出时,跨域 SignalR 不起作用
Cross domain SignalR does not work when issued form another computer
我在不同的域中有两个 MVC 应用程序,一个 (csm.mywebsite.com) 使用 signalR 调用客户端函数,另一个 (ess.mywebsite.com)。当我在同一台开发机器上使用两个浏览器对其进行测试时,它工作正常。但是当我尝试从另一台机器调用一台机器中的函数时,它失败了,什么也没有发生。两台开发机器在 TFS 上都有这些应用程序。
服务器端配置代码在csm.mywebsite.com:
public class NotificationHub : Hub
{
}
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.Map("/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
{
};
map.RunSignalR(hubConfiguration);
});
}
}
我使用以下代码从服务器调用客户端函数:
GlobalHost.ConnectionManager.GetHubContext<NotificationHub>
().Clients.User(userID.ToString()).SendMessage(message, "CSM");
和另一个域的客户端 (ess.mywebsite.com)
$(document).ready(function ()
$.getScript('http://csm.mywebsite.com/Scripts/jquery.signalR-2.4.1.min.js', function () {
$.getScript('http://csm.mywebsite.com/signalr/hubs', function () {
$.connection.hub.url = 'http://csm.mywebsite.com/signalr';
var notificationHub = $.connection.notificationHub;
console.log(notificationHub);
$.connection.hub.start();
notificationHub.client.sendMessage = function (content, system) {
alert(content);
};
});
});
});
不好意思,我忽略了一个事实,即每台开发机器都有本地存储的项目源。那么没有订阅其他机器的客户端是正常的。因此,不能从其他机器调用客户端函数。我将最新的更新部署到服务器,一切正常。
我在不同的域中有两个 MVC 应用程序,一个 (csm.mywebsite.com) 使用 signalR 调用客户端函数,另一个 (ess.mywebsite.com)。当我在同一台开发机器上使用两个浏览器对其进行测试时,它工作正常。但是当我尝试从另一台机器调用一台机器中的函数时,它失败了,什么也没有发生。两台开发机器在 TFS 上都有这些应用程序。
服务器端配置代码在csm.mywebsite.com:
public class NotificationHub : Hub
{
}
public class Startup
{
public void Configuration(IAppBuilder app)
{
app.Map("/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
{
};
map.RunSignalR(hubConfiguration);
});
}
}
我使用以下代码从服务器调用客户端函数:
GlobalHost.ConnectionManager.GetHubContext<NotificationHub>
().Clients.User(userID.ToString()).SendMessage(message, "CSM");
和另一个域的客户端 (ess.mywebsite.com)
$(document).ready(function ()
$.getScript('http://csm.mywebsite.com/Scripts/jquery.signalR-2.4.1.min.js', function () {
$.getScript('http://csm.mywebsite.com/signalr/hubs', function () {
$.connection.hub.url = 'http://csm.mywebsite.com/signalr';
var notificationHub = $.connection.notificationHub;
console.log(notificationHub);
$.connection.hub.start();
notificationHub.client.sendMessage = function (content, system) {
alert(content);
};
});
});
});
不好意思,我忽略了一个事实,即每台开发机器都有本地存储的项目源。那么没有订阅其他机器的客户端是正常的。因此,不能从其他机器调用客户端函数。我将最新的更新部署到服务器,一切正常。