/// <summary> /// Message集线器类 /// </summary> [HubName("chathub")] public class ChatHub : Hub { private Broadcaster _broadcaster; public ChatHub() : this(Broadcaster.Instance) { } public ChatHub(Broadcaster broadcaster) { _broadcaster = broadcaster; } /// <summary> /// 给所有页面发送消息 /// </summary> /// <param name="name"></param> /// <param name="message"></param> public void Send(string name, string message) { _broadcaster.broadcastMessage(name, message); } /// <summary> /// 给指定页面发送消息 /// </summary> /// <param name="id"></param> /// <param name="message"></param> public void Send(int id, string message) { _broadcaster.broadcastMessage(id, message); } [HubMethodName("connect")] public void Connect(string id) { var connnectId = Context.ConnectionId;//Value if (id != null && connnectId != null) { SERedisHelper.StringSet(id, connnectId, 10); } } } public class Broadcaster { private readonly static Lazy<Broadcaster> _instance = new Lazy<Broadcaster>(() => new Broadcaster()); private readonly IHubContext _hubContext; public Broadcaster() { _hubContext = GlobalHost.ConnectionManager.GetHubContext<ChatHub>(); } public static Broadcaster Instance { get { return _instance.Value; } } /// <summary> /// 给所有页面发送消息 /// </summary> /// <param name="name"></param> /// <param name="message"></param> public void broadcastMessage(string name, string message) { _hubContext.Clients.All.broadcastMessage(name, message); } /// <summary> /// 给指定页面发送消息 /// </summary> /// <param name="id"></param> /// <param name="message"></param> public void broadcastMessage(int id, string message) { string strValue = SERedisHelper.StringGet(id.ToString()); BIT.Common.Log.Debug("C# 后台 向客户端 发送消息的方法strValue:" + strValue); if (strValue != null && strValue.Length > 0) _hubContext.Clients.Client(strValue).broadcastMessage(message); } }
相关文章: