c# - 从 .net 代码和 JavaScript 调用 SignalR hub

标签 c# jquery asp.net-mvc signalr

我有一个 SignalR 集线器,我成功地从 JQuery 调用了它。

public class UpdateNotification : Hub
{
    public void SendUpdate(DateTime timeStamp, string user, string entity, string message)
    {
        Clients.All.UpdateClients(timeStamp.ToString("yyyy-MM-dd HH:mm:ss"), user, entity, message);       
    }
}

像这样从JS成功发送更新消息

var updateNotification = $.connection.updateNotification;
$.connection.hub.start({ transport: ['webSockets', 'serverSentEvents', 'longPolling'] }).done(function () { });
updateNotification.server.sendUpdate(timeStamp, user, entity, message);

这样就成功接收了

updateNotification.client.UpdateClients = function (timeStamp, user, entity, message) {

我不知道如何从我的 Controller 中调用 sendUpdate。

最佳答案

从您的 Controller ,在与集线器相同的应用程序中(而不是从其他地方,作为 .NET 客户端),您可以像这样调用集线器:

var hubContext = GlobalHost.ConnectionManager.GetHubContext<UpdateNotification>();
hubContext.Clients.All.yourclientfunction(yourargs);

请参阅 https://github.com/SignalR/SignalR/wiki/Hubs 脚下的从集线器外部通过集线器广播

调用您的自定义方法有点不同。可能最好创建一个静态方法,然后您可以使用它来调用 hubContext,因为 OP 在这里:Server to client messages not going through with SignalR in ASP.NET MVC 4

关于c# - 从 .net 代码和 JavaScript 调用 SignalR hub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13950118/

相关文章:

C# 是否可以在名为 new 的类中命名一个方法?

c# - NHibernate 中以只读方式获取的实体存在于 PersistenceContext 中

javascript - 使用鼠标移动 jQuery Tipsy 工具提示

c# - 使用日期时间、小数、GUID 和 Nullable 类型时,MVC 模型绑定(bind)速度较慢

c# - Fluentvalidation WithMessage 和单例实例

c# - 如何在 ASP.Net MVC 5 应用程序中从浏览器获取 URL

c# - 使用相同代码实现时无法模仿 ConcurrentStack 的性能

javascript - jQuery clone() 没有按预期工作

javascript - 使用 jQuery 设置 css 样式

javascript - 在 URL 中传递 base64 信息作为查询字符串的正确方法?