2KB项目,专业的源码交易网站 帮助 收藏 每日签到

SignalR 双向异步通信框架之 —— 组提醒

  • 时间:2019-01-23 18:45 编辑:2KB 来源:2KB.COM 阅读:405
  • 扫一扫,手机访问
  • 分享
摘要:
SignalR 英文原文:SignalR - Group Notifications

简介

我们这个教程想要解决的目标是:使用 SignalR 来建立一个消息广播系统例子,其可以让一个指定的组实时接收到外部应用发来的提醒。

背景

一个现实世界的应用:一种完美的情况是,一个单一的代码源可以服务于多个客户或领域。例如:http://twitter.com/{用户名},在这个网站里,用户名为参数,定制到包含这个用户的信息的网页中。简一的代码,但多域。

本目标只是为了基于一个组或一个唯一 ID 去提醒(发送消息)。其次,使用一个外部的应用程序来实现这个目的,例如用一个Windows 服务来建立广播消息到组。

设计:基于三个类的简单消息体系

  1. Message - 一个基本的单元
  2. Messenger -  消息的管理类
  3. MessengerHub - SignalR 的接口

使用代码  

(A)在服务器端

首先设计将用于服务器端的基本类型。我的意思是服务器端在这种情况下,运用在/ Web应用程序或项目。在此示例代码中,我将在Visual Studio 2010构建一个网站项目。

1。信息

很简单的容器或基本数据单元,代表一个实际的信息  

2。信使

在Messenger类的,我们有一个创建了一个实例管理器,这将是动态生成的请求(使用懒加载) 

其次,方法 GetAllMessages 将被用来获取所有被包含在 ConcurrentDictionary 里的消息。你可以根据你的需求(如取特定的组的消息等)来更好地获取消息

第三,BroadCastMessage 方法将把消息发给一个特定组里的每一个成员。这些成员根据组参数获得。

以下是获得成员的方法 GetClients:

这将基于 MessengerHub 来返回指定组的成员。然后使用上面的 BroadCastmessage 方法,把提醒消息用“add” 方法来发给组里的每个成员。

3. MessengerHub

我们添加了 AddToGroup,GetAllMessages,BroadCastMessage 方法到这个类中,这个类实现了消息管理的功能,也提供了远程外部接口,可以通过 x.x.x.x/signalr/hubs 来调用。

(B) 客户端代码

这个客户端代码是基于所有 SignalR 的启动,请注意我前面建立的 WebSite 项目,前面的三个类需要增加到 "App_Code" 里。

上面的代码是相对简单的。jGrowl 被用在消息提醒系统中,或者在浏览器上弹出消息。

代码中的 ("sourcing") 组名可以根据你的需要来修改。

(C) 外部的应用程序

上面的控制台应用程序基本上是外部应用程序和对SignalR的远程调用。它会创建一个代理沟通到远程站点。

结果是:

有趣的关键点

上面的程序访问地址是 http://localhost:9616/signalr。也可以通过后面的地址检查测试你的 SignalR 在服务器端是否正常运行:http://localhost:9616/signalr/hubs。你会看到一个扩展应用,里面显示出这个应用暴露的所有的方法。

以上的两个例子应该能让你开始开发你自己的应用了。

本文中的所有译文仅用于学习和交流目的,转载请务必注明文章译者、出处、和本文链接。 2KB翻译工作遵照 CC 协议,如果我们的工作有侵犯到您的权益,请及时联系我们。


2KB项目(www.2kb.com,源码交易平台),提供担保交易、源码交易、虚拟商品、在家创业、在线创业、任务交易、网站设计、软件设计、网络兼职、站长交易、域名交易、链接买卖、网站交易、广告买卖、站长培训、建站美工等服务

  • 全部评论(0)
资讯详情页最新发布上方横幅
最新发布的资讯信息
【计算机/互联网|】Nginx出现502错误(2020-01-20 21:02)
【计算机/互联网|】网站运营全智能软手V0.1版发布(2020-01-20 12:16)
【计算机/互联网|】淘宝这是怎么了?(2020-01-19 19:15)
【行业动态|】谷歌关闭小米智能摄像头,因为窃听器显示了陌生人家中的照片(2020-01-15 09:42)
【行业动态|】据报道谷歌新闻终止了数字杂志,退还主动订阅(2020-01-15 09:39)
【行业动态|】康佳将OLED电视带到美国与LG和索尼竞争(2020-01-15 09:38)
【行业动态|】2020年最佳AV接收机(2020-01-15 09:35)
【行业动态|】2020年最佳流媒体设备:Roku,Apple TV,Firebar,Chromecast等(2020-01-15 09:31)
【行业动态|】CES 2020预览:更多的流媒体服务和订阅即将到来(2020-01-08 21:41)
【行业动态|】从埃隆·马斯克到杰夫·贝佐斯,这30位人物定义了2010年代(2020-01-01 15:14)
联系我们

Q Q: 7090832

电话:400-0011-990

邮箱:7090832@qq.com

时间:9:00-23:00

联系客服
商家入住 服务咨询 投拆建议 联系客服
0577-67068160
手机版

扫一扫进手机版
返回顶部