Hub在SignalR中代表什么

本文关键字:什么 SignalR Hub | 更新日期: 2023-09-27 18:20:53

我刚刚在SignalR读Hubs(https://github.com/SignalR/SignalR)但我搞不清楚它是什么。它像聊天中的群还是其他什么?

Hub在SignalR中代表什么

我没有使用过它,但基本上它是一种用于客户端(javascript、silverlight、.NET)和ASP.NET之间通信的"实时"通信技术。目前有三种"实时"通讯方法(比如聊天应用程序):轮询、长轮询和HTML5 WebSockets。SignalR添加了一个抽象层,并根据浏览器支持和上下文利用所有这三种方法。以下是一篇文章,描述了这3种方法(以及SignalR如何提供帮助):http://blog.maartenballiauw.be/post/2011/11/29/Techniques-for-real-time-client-server-communication.aspx

下面是Hanselman的一篇文章(以及一个功能演示!),介绍如何使用它:http://www.hanselman.com/blog/AsynchronousScalableWebApplicationsWithRealtimePersistentLongrunningConnectionsWithSignalR.aspx

另一个:http://jordanwallwork.co.uk/2011/10/signalr/

集线器是用于通信的类。在javascript中,您可以使用这样的集线器:

$(function() {
    var myConnection = $.connection.myHub;
    $.connection.hub.start();
});

在ASP.NET中,您可以执行以下操作:

public class Chat : Hub {
    public void Distribute(string message) {
        Clients.receive(Caller.name, message);
    }
}

这两个片段都取自上面引用的链接。

您可以将Hubs视为用于客户端(javascript)和服务器(hub)之间的独立连接的Asp.NET MVC控制器。

在客户端和服务器之间发送不同类型的消息和数据的简单方式。

参数和返回值在客户端自动序列化到JSON和从JSON序列化。

集线器具有将客户端添加到组的概念,因此您可以使用AddToGroup和RemoveFromGroup方法创建聊天室功能。因此,您可以向特定组中的所有客户端发送消息。

我真的建议从GitHub下载代码并查看示例。这里有一个聊天示例,包含房间(组)。

集线器是SignalR的高级API,允许通过HTTP进行实时客户端到服务器服务器到客户端RPC。集线器支持一对多RPC,例如:所有客户端、客户端组、仅调用方等。传输超过以下其中一种(最好到最坏):WebSocket、服务器发送的事件、永久帧、长轮询。

请参阅:https://channel9.msdn.com/Events/Build/2012/3-034

我读到这篇文章是为了找到一个关于什么是集线器的明确答案,并遇到了这个问题。尽管这里有很多答案,但它们似乎有点过时,因为它们没有完全揭示signalR的潜力。

我最近在singalR的帮助下创建了一个推送通知应用程序。

想象一下,发送一个AJAX请求,将数据插入数据库。如果将listner连接到侦听更改的数据库,则可以从服务器向所有连接的用户发送有关特定数据库更改的消息。。。换言之,是发生了什么事情的推送通知。

本文给出了一个关于如何部分实现的好例子