gpt4 book ai didi

javascript - 仅当在 Angular js 中手动重新加载页面时,signalr js 客户端方法才会调用

转载 作者:行者123 更新时间:2023-11-28 06:09:23 25 4
gpt4 key购买 nike

我在 Angular js 中使用简单的信号器来通知用户,但客户端方法仅在我刷新页面时调用,我在 webapi 中有服务器方法

启动.cs

[assembly: OwinStartupAttribute(typeof(signalRTest.Startup))]
namespace signalRTest
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
app.Map("/signalr", map =>
{
map.UseCors(CorsOptions.AllowAll);
var hubConfiguration = new HubConfiguration
{
};
map.RunSignalR(hubConfiguration);
});
}
}
}

集线器类

public class ContactHub : Hub
{
public void UserRideRequested(int id)
{
Clients.All.notifyUsers(id);
}
}

客户端--

index.html

<html lang="en">
<head>
<script src="Scripts/jquery.signalR-2.2.0.js"></script>
<script src="http://localhost:1526/signalr/hubs"></script>

</head>
<body ng-app="ApplicationModule">
<div ng-view class="slide">
</div>
<script type="text/javascript">
var contactNotifyUsers = undefined;
jQuery.support.cors = true;
$.connection.hub.url = 'http://localhost:1526/signalr';
contactNotifyUsers = $.connection.contactHub;
</script>

</body>

Controller 将id发送到服务器

var AdminController = function ($scope,$route) {
$.connection.hub.url = 'http://localhost:1526/signalr';
$.connection.hub.start().done(function () {
contactNotifyUsers.server.userRideRequested(rideId);
$route.reload();
});
}

客户端 Controller

var UserController = function ($scope, $location, $http) {
$.connection.hub.url = 'http://localhost:1526/signalr';
contactNotifyUsers.client.notifyUsers = function (id) {
OpenModalForRideResponse.checkModal(id);
};
$.connection.hub.start();
}

当我重新加载页面时,此代码完美运行,否则它不会显示错误或任何效果

最佳答案

因为您在 Owin Startup.CS 中的映射在应用程序路由实际分支(命中)之前不会运行。我不确定您是否正在尝试一些特殊的东西,但像下面这样配置就足够了:

[assembly: OwinStartupAttribute(typeof(signalRTest.Startup))]
namespace signalRTest
{
public partial class Startup
{
public void Configuration(IAppBuilder app)
{
app.UseCors(CorsOptions.AllowAll);
app.MapSignalR();
}
}
}

默认情况下,SignalR 会将请求映射到 /signalr

关于javascript - 仅当在 Angular js 中手动重新加载页面时,signalr js 客户端方法才会调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36551298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com