在SignalR 2.0中将消息从服​​务器发送到客户端

时间:2016-02-09 05:18:19

标签: c# jquery asp.net-mvc-5 signalr

我正在学习SignalR,它非常简单。但是,我在将消息从服​​务器发送到客户端时遇到问题。

我的Hub类如下:

public class UpdateHub : Hub
{
    private readonly UpdateBroadcast _broadcaster;

    public UpdateHub() : this(UpdateBroadcast.Instance) { }

    public UpdateHub(UpdateBroadcast broadCaster)
    {
        _broadcaster = broadCaster;
    }
}

我在我的广播班中称这个中心为:

public class UpdateBroadcast
{
    private readonly static Lazy<UpdateBroadcast> _instance = new Lazy<UpdateBroadcast>(
    () => new UpdateBroadcast(GlobalHost.ConnectionManager.GetHubContext<UpdateHub>()));

    private IHubContext _context;

    private UpdateBroadcast(IHubContext context)
    {
        _context = context;
    }

    public static UpdateBroadcast Instance
    {
        get { return _instance.Value; }
    }

    public void UpdatePost(Post post)
    {
        _context.Clients.All.updatePost(post);
    }

}

在我的MVC控制器中,我调用的是UpdatePost方法:

public JsonResult AddPost(Post post)
{
    UpdateBroadcast broadcaster = UpdateBroadcast.Instance;
    Post result = dbFunctions.AddPost(post);
    broadcaster.UpdatePost(post);
    return Json(new { success = result != null  }, JsonRequestBehavior.DenyGet);
}

当我调试代码时,我可以看到UpdatePost已执行但客户端没有活动。我的客户端功能是这样的:

$(function () {    
    var update = $.connection.updateHub;
    update.client.updatePost = function (data) {
        alert("called update post");
    };
});

我似乎不明白造成这种情况的原因。

1 个答案:

答案 0 :(得分:1)

请查看以下2个链接。我对signalR的成功实现非常有帮助。希望这个链接可以帮助你。

https://github.com/vgheri/ChatR

http://www.codeproject.com/Articles/524066/SignalR-Simple-Chat-Application-in-Csharp