ly/Common/WebSocket/SocketHub.cs

47 lines
1.5 KiB
C#
Raw Permalink Normal View History

2025-03-22 12:16:22 +00:00
using LY.App.Extensions.DI;
using Microsoft.AspNetCore.SignalR;
using Newtonsoft.Json;
namespace LY.App.Common.WebSocket
{
/// <summary>
/// socket
/// </summary>
[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();
}
/// <summary>
/// // 自定义方法,用于向客户端推送消息
/// </summary>
/// <param name="message"></param>
/// <returns></returns>
public async Task SendMessageToClient(object message)
{
// 发送消息给所有客户端
var connId = this.Context.ConnectionId;
var msg = JsonConvert.SerializeObject(message);
await this.Clients.All.SendAsync("ReceiveMessage", msg);
}
/// <summary>
/// 向指的用户发送
/// </summary>
/// <param name="user"></param>
/// <param name="message"></param>
/// <returns></returns>
public async Task SendMessageToUser(string user, object message)
{
var msg = JsonConvert.SerializeObject(message);
await Clients.All.SendAsync("ReceiveMessage", user, msg);
}
}
}