客户端上的回调不会通过 SignalR 触发

本文关键字:SignalR 触发 回调 客户端 | 更新日期: 2023-09-27 17:56:20

我目前正在快速了解 SignalR,并尝试使用我对 SignalR 的非常基本的了解来构建一个非常基本的消息通知系统,但我无法让消息在提交后返回。

我已经阅读了许多关于该主题的博客,最基本的是拥有一个接受字符串值的 VOID 方法,然后通过将其附加到客户端上下文将其传递回去,但是,这不起作用,因为 onReceiveNotification() 在 JS 调试器中总是未定义的?

我错过了什么吗

通知中心.cs

[HubName("notificationHub")]
public class NotificationHub : Hub
{
    public override System.Threading.Tasks.Task OnConnected()
    {
        return base.OnConnected();
    }
    public override System.Threading.Tasks.Task OnDisconnected(bool stopCalled)
    {
        return base.OnDisconnected(stopCalled);
    }
    public override System.Threading.Tasks.Task OnReconnected()
    {
        return base.OnReconnected();
    }
    [HubMethodName("sendNotifications")]
    public void SendNotifications(string message)
    {
        Clients.All.onRecieveNotification(string.Format("{0} {1}", message, DateTime.Now.ToString()));
    }
}

消息.html页面

<div>
    <input type="text" id="messageinput" />
    <button id="notifybutton">Send Message</button>
</div>
<script src="Scripts/jquery-2.1.4.min.js"></script>
<script src="Scripts/jquery.signalR-2.2.0.min.js"></script>
<script src="signalr/hubs"></script>
<script type="text/javascript">
    jQuery(document).ready(function ($)
    {
        var $hub = $.connection.notificationHub;
        $.connection.hub.start();
        $(document).on("click", "#notifybutton", {}, function (e)
        {
            e.preventDefault();
            var $message = $("#messageinput").val();
            $hub.server.sendNotifications($message);
        });
    });
</script>

显示.html

<div>
    <ul id="messages"></ul>
</div>
<script src="Scripts/jquery-2.1.4.min.js"></script>
<script src="Scripts/jquery.signalR-2.2.0.min.js"></script>
<script src="signalr/hubs"></script>
<script type="text/javascript">
    jQuery(document).ready(function ($)
    {
        var $hub = $.connection.notificationHub;
        $hub.onRecieveNotification = function (message)
        {
            $("#message").append($("<li></li>", { text: message }));
        }
        $.connection.hub.start();
    });
</script>

客户端上的回调不会通过 SignalR 触发

看起来你缺少client

   $hub.client.onRecieveNotification = function (message)
    {
        $("#message").append($("<li></li>", { text: message }));
    }