using LY.App.Extensions.DI;
using Microsoft.AspNetCore.SignalR;
using Newtonsoft.Json;
namespace LY.App.Common.WebSocket
{
    /// 
    /// socket
    /// 
    [ServiceInjection(InjectionType.Singleton)]
    public class SocketHub : Hub
    {
        // 客户端连接事件
        public override async Task OnConnectedAsync()
        {
            var msg = JsonConvert.SerializeObject(new { msgType = "info", data = "hello" });
            // 发送消息给连接的客户端
            await Clients.Caller.SendAsync("ReceiveMessage", msg);
            await base.OnConnectedAsync();
        }
        /// 
        /// // 自定义方法,用于向客户端推送消息
        /// 
        /// 
        /// 
        public async Task SendMessageToClient(object message)
        {
            // 发送消息给所有客户端
            var connId = this.Context.ConnectionId;
            var msg = JsonConvert.SerializeObject(message);
            await this.Clients.All.SendAsync("ReceiveMessage", msg);
        }
        /// 
        /// 向指的用户发送
        /// 
        /// 
        /// 
        /// 
        public async Task SendMessageToUser(string user, object message)
        {
            var msg = JsonConvert.SerializeObject(message);
            await Clients.All.SendAsync("ReceiveMessage", user, msg);
        }
    }
}