SignalR实例

服务器

创建signalr集线器类

 [HubName("AdHub")]
    public class AdHub : Hub
    {
        public void Send(string ver)
        {
            Clients.All.addMessage(ver);
        }

    }
signalr集线器
[assembly: OwinStartupAttribute(typeof(Server.Startup))]
namespace Server
{
    public partial class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.UseCors(CorsOptions.AllowAll);
            app.MapSignalR();
            ConfigureAuth(app);
        }
    }

     
}
StartUp.cs

 

 

JS客户端

Microsoft.AspNet.SignalR.Client

  <script src="http://172.16.1.2:8888/Scripts/jquery-1.12.4.min.js"></script>   
    <script src="http://172.16.1.2:8888/Scripts/jquery.signalR-2.2.1.min.js"></script>  
    <script src="http://172.16.1.2:8888/signalr/hubs"></script>
引用服务器signalr
  <script type="text/javascript">
        $(function () {
            //设置hub连接
            $.connection.hub.url = "http://172.16.1.2:8888/signalr";
            // 定义代理
            var ad= $.connection.AdHub;

           //创建客户端自定义内容
            ad.client.addMessage = function ( ver) {
                alert(ver + '推送成功');
            };
          
            // 开始连接
            $.connection.hub.start().done(function () {
                  $("#msg").click(function(){
                          chat.server.send("这是向服务器发的消息");
                  });
            });
        }); 
    </script>
浏览器客户端代码

服务器端定义复杂对象

public class Myclass
{
       public string username{get;set;}
       public string message{get;set;}
}
复杂对象代码

js客户端复杂对象

var proxy=$.connection.AdHub;
proxy.client.addMessage=function(result)
{
     console.log(result.username+'   '+result.message);
}
js客户端代理

var json={aaa:"1111",bbb:2222};

 

//服务端定义的方法

public void Push(UserRedPacket model)
{

 //客户端方法

Clients.All.Pull(model);
}

js 客户端

proxy.server.push()//调用服务端方法

proxy.client.pull=function(){}//定义客户端在收到消息是要干什么事

 

 

从Hub类管理组成员身份

//调用客户端的连接ID,如果有多个Hub,该连接ID是唯一的
string connectionId=Context.ConnectionId;

//用户信息
System.Security.Principal.IPrincipal user=Context.User;

//获取Signalr连接对象
System.Web.HttpContextBase httpContext=Context.Request.GetHttpContext();

 

posted @ 2016-10-14 10:26  奎宇工作室  阅读(194)  评论(0编辑  收藏  举报