我只是在 SignalR(https://github.com/SignalR/SignalR)阅读集线器,但我不清楚它是什么。是像聊天中的群组还是其他什么?
4 回答
我没有使用它,但基本上它是一种“实时”通信技术,用于在客户端(javascript、silverlight、.NET)和 ASP.NET 之间进行通信。目前有 3 种“实时”通信方法(想想聊天应用程序):轮询、长轮询和 HTML5 WebSockets。SignalR 添加了一个抽象层,并根据浏览器支持和上下文利用所有这 3 种方法。这是一篇描述这 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);
}
}
这两个片段都取自上面引用的链接。
您可以将集线器视为用于客户端 ( javascript ) 和服务器 (集线器)之间的持久连接的 Asp.NET MVC 控制器。
在客户端和服务器之间发送不同类型的消息和数据的简单方法。
参数和返回值在客户端自动序列化到 JSON 和从 JSON 序列化。
集线器具有将客户端添加到组的概念,因此您可以使用 AddToGroup 和 RemoveFromGroup 方法创建聊天室功能。因此您可以向特定组中的所有客户端发送消息。
我真的建议从GitHub下载代码并查看示例。那里有一个带有房间(组)的聊天样本。
集线器是 SignalR 的高级 API,它允许通过 HTTP 进行实时客户端到服务器和服务器到客户端的 RPC。集线器支持一对多 RPC,例如:所有客户端、客户端组、仅调用者等。传输通过以下之一(最好到最差):WebSocket、服务器发送事件、永久帧、长轮询。
正在阅读此内容以得出关于集线器是什么的明确定义的答案,并遇到了这个问题。尽管这里有很多答案,但它们似乎有点陈旧,因为它们没有完全揭示 signalR 的潜力。
我最近在singalR 的帮助下创建了一个推送通知应用程序。
想象一下发送一个 AJAX 请求,将数据插入数据库。如果您将侦听器连接到侦听更改的数据库,则可以从服务器向所有连接的用户发送有关该特定数据库更改的消息……换句话说,就是发生某事的推送通知。
本文给出了一个很好的例子来说明如何部分实现这一点