Aspnet SignalR 入门

服务器端

安装使用

程序运行环境 .netFramwork 4.5及以上版本

SignalR 可通过Owin Hosting,也可以通过IIS Hosting

owin selfhost

  • 安装包 pacakge list
install-package Microsoft.aspnet.signalr.SelfHost

install-package Microsoft.owin.hosting

install-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<Startup>(_signalRURI);
}
catch (TargetInvocationException texs)
{
loger.Error("SignalR服务器启动失败! " );
}
catch (Exception ex)
{
loger.Error("SignalR服务器启动出错! " );
}
Console.ReadKey();
}
}

客户端调用

1、web客户端调用

Install-Package Microsoft.AspNet.SignalR.JS  
<!--依赖文件-->  
<script src="../Scripts/jquery-1.6.4.min.js"></script>  
<script src="../Scripts/jquery.signalR-2.2.1.min.js"></script>  
<!--加载hub客户端js代理 -->  
<script src="http://localhost:8000/signalr/hubs"></script>  

//创建 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('<br />');  
}  
//启动监听  
$.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();  
    }  

猜你喜欢

转载自my.oschina.net/pilgrimzh/blog/1631219