47 lines
1.5 KiB
C#
47 lines
1.5 KiB
C#
|
|
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);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|