using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.SignalR;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;
using StackExchange.Redis;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Security.Claims;
using System.Threading.Tasks;
using TXWeb.Comm;
using TXWeb.Redis;
namespace TXWeb.SignalR
{
public class ChatHub : Hub
{
private readonly IRedisCacheManager _redis;
private static string hubstr = "user:hub";//在线用户
private static string hubmessage = "user:hub:message";//用户消息
private static string action = "PromptMessage";//调用方法名称
public ChatHub(IRedisCacheManager redis)
{
this._redis = redis;
}
/// <summary>
/// 开始连接,保存用户信息
/// </summary>
/// <param name="json"></param>
/// <returns></returns>
[HubMethodName("onstart")]
public async Task OnStart(UserHub jsonhub)
{
//连接ID
var connectionId = Context.ConnectionId;
List<UserHub> hunlist = new List<UserHub>();
//缓存取用户信息
if (_redis.Get(hubstr))
{
//获取在线列表
hunlist = _redis.Get<List<UserHub>>(hubstr);
//获取当前用户在线列表
var list = hunlist.Where(x => x.uid == jsonhub.uid && x.terrace == jso
.net长连接
最新推荐文章于 2023-06-20 09:52:58 发布