SignalR实例
服务器
创建signalr集线器类
[HubName("AdHub")] public class AdHub : Hub { public void Send(string ver) { Clients.All.addMessage(ver); } }
[assembly: OwinStartupAttribute(typeof(Server.Startup))] namespace Server { public partial class Startup { public void Configuration(IAppBuilder app) { app.UseCors(CorsOptions.AllowAll); app.MapSignalR(); ConfigureAuth(app); } } }
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>
<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); }
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();