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