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); } } }