SignalR实时通信

/// <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);
    }
}
ChatHub.cs内部代码

相关文章:

  • 2021-08-22
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-12-05
  • 2019-10-30
猜你喜欢
  • 2021-11-01
  • 2022-12-23
  • 2022-02-12
  • 2022-01-19
  • 2021-04-12
相关资源
相似解决方案