文档详情

Asp net SignalR 实现服务端消息推送到Web端.docx

发布:2024-02-01约7.75千字共17页下载文档
文本预览下载声明

ASignalR实现服务端消息推送到Web端

之前的文章介绍过ASignalR,ASP.NETSignalR是一个ASP.NET下的类库,可以在ASP.NET的Web项目中实现实时通信.今天我们来实现服务端消息推送到Web端,首先回顾一下它抽象层次图是这样的:

实际上ASignalR2实现服务端消息推送到Web端,更加简单.为了获取更好的可伸缩性,我们引入消息队列,看如下基本流程图:

消息队列MQ监听,在Website服务端一收到消息,马上通过Signalr推送广播到客户端.创建ASP.NETMVCWEBAPP,从NuGet安装SignalR2.12

Install-PackageMicrosoft.AspNet.SignalR

具体实现代码,是这样的,我们增加一个空的Hub:

publicclass

publicclassFeedHub:Hub

{

publicvoidInit()

{

}

}

是简单的消息模型,标题与正文属性:

publicintId

{get;set;

}

publicstring

MSG_TITLE{

get;set;

}

[Serializable]publicclassPushMessageModel{publicstringMSG_CONTENT{get;set;}}服务端推送具体类,记录日志,创建消息队列实例,监听,等待收取消息.

[Serializable]

publicclassPushMessageModel

{

publicstringMSG_CONTENT{get;set;}

}

ActiveMQListenAdapter是一个封装过的对象.

publicclass

publicclassMQHubsConfig

{

privatestaticILoggerlog=newLogger(MQHubsConfig);

///summary

///Registersthemqlistenandhubs.

///Registersthemqlistenandhubs.

////summary

publicstaticvoidRegisterMQListenAndHubs()

{

varactivemq=

Megadotnet.MessageMQ.Adapter.ActiveMQListenAdapterPushMessage

Model.Instance(MQConfig.MQIpAddress,

MQConfig.QueueDestination);

activemq.MQListener+=m=

{

log.InfoFormat(从MQ收到消息{0},m.MSG_CONTENT);

GlobalHost.ConnectionManager.GetHubContextFeedHub().Clients.

All.receive(m);

};

activemq.ReceviceListenerPushMessageModel();

}

}

上面有一句关键代码

GlobalHost.ConnectionManager.GetHubContextFeedHub()

.Clients.All.receive(m); 这里使用了GetHubContext方法后,直接来广播消息.

需要在MVCApplication下加载:

publicclass

publicclassMvcApplication:System.Web.HttpApplication

{

protectedvoidApplication_Start()

{

AreaRegistration.RegisterAllAreas();

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

RouteConfig.RegisterRoutes(RouteTable.Routes);

BundleConfig.RegisterBundles(BundleTable.Bundles);

MQHubsConfig.RegisterMQListenAndHubs();

}

}

同时需要增加一个Starup.cs,用于Owin

[assembly:OwinStartup(

[assembly:OwinStartup(typeof(RealTimeApp.Startup))]

namespaceRealTimeApp

{

publicclassStartup

{

publicv

显示全部
相似文档