【问题标题】:SignalR and WebAPISignalR 和 WebAPI
【发布时间】:2023-04-05 18:40:01
【问题描述】:

我想向网页发送通知,这是一个客户端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);
}

然后从我的控制器 Action 中调用它:

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

为什么以及如何解决?

【问题讨论】:

  • 尝试将[HubName("progressHub")] 添加到您的中心
  • 如何解决客户端的问题?
  • 可能无法识别集线器
  • 服务器部分当时甚至无法启动......还是没有?
  • 你试过了吗?

标签: javascript jquery asp.net asp.net-mvc signalr


【解决方案1】:

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

$(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。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-05-12
    • 2019-02-09
    • 1970-01-01
    • 2020-04-18
    • 2018-07-08
    • 2017-01-27
    • 2018-09-25
    • 2020-02-13
    相关资源
    最近更新 更多