服务器端
安装使用
程序运行环境 .netFramwork 4.5及以上版本
SignalR 可通过Owin Hosting,也可以通过IIS Hosting
owin selfhost
- 安装包 pacakge list
install-package Microsoft.aspnet.signalr.SelfHostinstall-package Microsoft.owin.hostinginstall-package Microsoft.owin.cors
-
配置startup.cs
- hub为单实例
public class Startup { private log4net.ILog loger = log4net.LogManager.GetLogger(typeof(Startup)); //单例hub才对 Hub.MessageHub hub = new Hub.MessageHub(); public void Configuration(IAppBuilder app) { GlobalHost.DependencyResolver.Register(typeof(Hub.MessageHub), () => hub); app.UseCors(CorsOptions.AllowAll); app.MapSignalR(); loger.DebugFormat("启动Startup服务器..."); //app.Map("/signalr", map => //{ // //添加 允许 跨域访问 规则 // app.UseCors(CorsOptions.AllowAll); // var hubConfiguration = new HubConfiguration // { // EnableDetailedErrors=true, // EnableJSONP=true // }; // map.MapSignalR(hubConfiguration); //}); }
- hub多实例(默认)
public class Startup1 { public void Configuration(IAppBuilder app) { //跨域设置 app.UseCors(CorsOptions.AllowAll); //路由注册(使用默认) app.MapSignalR(); } }
- 启动
class Program{ static IDisposable signalR; static void Main(string[] args){string _signalRURI = "http://+:8000"try{signalR = WebApp.Start(_signalRURI);}catch (TargetInvocationException texs){loger.Error("SignalR服务器启动失败! " );}catch (Exception ex){loger.Error("SignalR服务器启动出错! " );}Console.ReadKey();}}
客户端调用
1、web客户端调用
Install-Package Microsoft.AspNet.SignalR.JS
//创建 MsgHub js实例 $.connection.hub.url = "http://localhost:8000/signalr"; var msgHub = $.connection.msgHub; //启用客户端日志 $.connection.hub.logging = true; //注册客户端接收事件处理 msgHub.client.receive = function (content) { console.info(content); $('#result').append('服务器推送内容:'+content).append(''); } //启动监听 $.connection.hub.start().done(function () { //调用服务端发送消息 $('#btnOne').click(function () { var text = $('#txtOne').val(); msgHub.server.send(text); }); });
2、其他桌面客户端调用 wpf,console、winform client
Install-Package Microsoft.AspNet.SignalR.Client
//SignalR.Client简单实例 static void Main(string[] args) { //创建客户端连接 string url = "http://localhost:8000"; var con = new HubConnection(url); //实例化客户端代理 IHubProxy msgProxy = con.CreateHubProxy("MsgHub"); //注册客户端接收 msgProxy.On("receive", (content) => { Console.WriteLine("服务器推送内容:" + content); }); //启动监听并等待 con.Start().Wait(); //客户端,发送内容 msgProxy.Invoke("Send", "ConsonleClient,上线了"); Console.WriteLine("ConsonleClient,启动成功"); Console.Read(); }