gpt4 book ai didi

javascript - SignalR 和 WebAPI

转载 作者:行者123 更新时间:2023-11-28 04:34:27 24 4
gpt4 key购买 nike

我想向网页发送通知,该网页是客户端WebAPI。所以,我有 2 个解决方案,Asp.Net MVC 应用程序和 WebAPI 应用程序。我已将 SignalR nuget 添加到两者中。 WebAPI 部分具有以下代码:

public class ProgressHub : Hub
{
public void Notification(string message)
{
Clients.Caller.onProgressNotification(message);
}
}


private void SendMessage(string message)
{
var context = Microsoft.AspNet.SignalR
.GlobalHost.ConnectionManager.GetHubContext<Hubs.ProgressHub>();
context.Clients.All.onProgressNotification(message);
}

然后从我的 Controller 操作调用它:

public async Task<IHttpActionResult> ZonalPost()
{
SendMessage("Start");
// my long operation
SendMessage("Scan complete");
// my long operation
SendMessage("Convert complete");
// my long operation

在我的网络应用程序(客户端部分)中:

<script src="~/Scripts/jquery.signalR-2.2.2.min.js"></script>
<script src="~/signalr/hubs"></script>
<script>
$(function () {
var progress = $.connection.progressHub;

progress.client.onProgressNotification = function (message) {
console.log(message);
};
});

但我收到一个错误

430 Uncaught TypeError: Cannot read property 'client' of undefined

为什么以及如何解决?

最佳答案

您可能需要使用如下内容:

$(function () {
$.connection.hub.url = '<yourbackendurl>';
var connection = $.hubConnection();
var progress = connection.createHubProxy('progressHub');
progress.on('onProgressNotification', function(message) {
console.log(message);
});
connection.start()
.done(function(){ console.log('Now connected, connection ID=' + connection.id); })
.fail(function(){ console.log('Could not connect'); });
});

请参阅 using SignalR without the generated proxy 上的文档。请注意,如果您要连接到不同的服务器,您还需要指定服务器 URL。

关于javascript - SignalR 和 WebAPI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44359165/

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