首页 > 代码库 > signalr服务端

signalr服务端

signalr 支持 iis托管、winform、windowsservices、wpf 托管 这里我采用winfrom托管

首先画一个这样的窗体

技术分享

在服务项目通过项目管理包安装signalr类库

技术分享

安装后 如果客户端是web程序 则将js移动到客户端 编写客户端的时候使用

技术分享

这次我安装缺少一个技术分享 程序集 我在官网下载手动引用上去了

新建一个类 该类用于自定义找到signalr回话的id  默认是随机的一个guid维护。。实现这个类 就可以根据用户id 直接发送给指定用户

  /// <summary>    /// 自定义维护每个用户会话id的实现类    /// </summary>    public class UserIdProvider:IUserIdProvider    {        public string GetUserId(IRequest request)        {            return request.QueryString["Uid"];        }    }

新建一个signalr启动类。并将自定义维护会话注入

 public class Startup    {       public void Configuration(IAppBuilder app)       {           //注入signlar自定义维护会话id           GlobalHost.DependencyResolver.Register(typeof(IUserIdProvider), () => new UserIdProvider());           app.UseCors(CorsOptions.AllowAll);           app.MapSignalR();       }    }

新建一个服务器的在线用户信息管理类

 /// <summary>    /// 在线用户信息管理类    /// </summary>    public class User    {        /// <summary>        /// 用户id        /// </summary>        public string Uid { get; set; }        /// <summary>        /// 用户名字        /// </summary>        public string UName { get; set; }        /// <summary>        /// 上线时间        /// </summary>        public DateTime Date { get; set; }        /// <summary>        /// 头像        /// </summary>        public string HeadPath { get; set; }        /// <summary>        /// 当前用户所在机构id        /// </summary>        public string OrganId{ get; set; }        /// <summary>        /// 当前用户所在部门id        /// </summary>        public string Depid { get; set; }    }

 

signalr服务端