async public Task <APIReturn> Sitdown([FromForm] int deskId, [FromForm] int pos) { await CheckPlayer(); var desk = await Desk.FindAsync(deskId); if (desk == null || pos < 1 || pos > 3) { throw new Exception("桌位或座位不存在"); } await Standup(); var sitdowned = redis.HGet <Player>("sitdown_ht", $"{desk.Id}_{pos}"); if (sitdowned != null && sitdowned.Id != CurrentPlayer.Id) { throw new Exception("该桌位已被其他用户坐下"); } if (!redis.HSetNx("sitdown_ht", $"{desk.Id}_{pos}", CurrentPlayer)) { throw new Exception("该桌位已被其他用户坐下"); } redis.HSet("sitdown_player_ht", CurrentPlayer.Id.ToString(), $"{desk.Id}_{pos}"); //通知消息,坐位有用户坐下 ImHelper.SendChanMessage(Guid.Empty, "ddz_chan", new { type = "Sitdown", deskId = desk.Id, pos = pos, player = CurrentPlayer, msg = $"{CurrentPlayer.Nick} 坐下了座位 ({desk.Title}, POS:{pos})" }); //判断三人都在,游戏开始 var players = redis.HMGet <Player>("sitdown_ht", new[] { $"{desk.Id}_1", $"{desk.Id}_2", $"{desk.Id}_3" }); if (players.Where(a => a == null).Any() == false) { var ddz = GamePlay.Create(players.Select(a => a.Nick).ToArray(), 1, 3); ddz.Shuffle(); ImHelper.JoinChan(players[0].Id, desk.Title); ImHelper.JoinChan(players[1].Id, desk.Title); ImHelper.JoinChan(players[2].Id, desk.Title); ImHelper.SendChanMessage(Guid.Empty, "ddz_chan", new { type = "GameStarted", deskId = desk.Id, players = players, msg = $"{desk.Title} 三人就位,游戏开始,{players[0].Nick} VS {players[1].Nick} VS {players[2].Nick}" }); using (var pipe = redis.StartPipe()) { pipe.HMSet($"ddz_gameplay_ht{ddz.Id}", "players", players, "desk", desk); pipe.HMSet("ddz_gameplay_player_ht", players[0].Id.ToString(), ddz.Id, players[1].Id.ToString(), ddz.Id, players[2].Id.ToString(), ddz.Id, players[0].Nick, ddz.Id, players[1].Nick, ddz.Id, players[2].Nick, ddz.Id); pipe.EndPipe(); } SendGameMessage(ddz, players); } return(APIReturn.成功); }
public object subscrChannel([FromForm] string websocketId, [FromForm] string channel) { ImHelper.JoinChan(websocketId, channel); return(new { code = 0 }); }
async public Task <APIReturn> PrevConnectWebsocket() { await CheckPlayer(); if (ImHelper.HasOnline(CurrentPlayer.Id)) { return(APIReturn.失败.SetMessage($"用户 {CurrentPlayer.Nick} 已在线,测试请使用多种浏览器模拟真实场景")); } var wsserver = ImHelper.PrevConnectServer(CurrentPlayer.Id, "nil"); ImHelper.JoinChan(CurrentPlayer.Id, "ddz_chan"); return(APIReturn.成功.SetData("server", wsserver)); }
/// <summary> /// 加入群聊 /// </summary> /// <param name="chanName"></param> /// <param name="clientId"></param> /// <returns></returns> public async Task <object> JoinChan(string chanName, string clientId) { ApiResult <object> result = new ApiResult <object>(); var(status, msg) = await ImHelper.JoinChan(chanName, clientId); if (!status) { result.Code = 1; } result.Msg = msg; result.Data = new { }; return(result); }
public async Task <AjaxResult <object> > SubscrChannel([FromForm] Guid accid, [FromForm] Guid channel) { if (!await _userManager.CheckAccid(accid.ToString(), Appid)) { return(new AjaxResult <object>("accid不存在")); } //判断群是否存在 if (!await _channelManager.CheckChannel(channel.ToString(), Appid)) { return(new AjaxResult <object>("channel不存在")); } ImHelper.JoinChan(accid, channel.ToString()); return(new AjaxResult <object> { code = 0 }); }
public IEnumerable <WeatherForecast> Get() { Commont.LogCommont.SerilogActionExtention.CreateInstance().Info($"时间:{DateTime.Now.ToString()}"); Commont.LogCommont.SerilogActionExtention.CreateInstance().Debug($"时间:{DateTime.Now.ToString()}"); Commont.LogCommont.SerilogActionExtention.CreateInstance().Error($"时间:{DateTime.Now.ToString()}"); Commont.LogCommont.SerilogActionExtention.CreateInstance().Warning($"时间:{DateTime.Now.ToString()}"); string Ip = this.Request.Headers["X-Real-IP"].FirstOrDefault() ?? this.Request.HttpContext.Connection.RemoteIpAddress.ToString(); var newGuid = Guid.NewGuid(); ImHelper.JoinChan(Guid.NewGuid(), "demoChan");//群聊,绑定消息频道 ImHelper.PrevConnectServer(newGuid, Ip); ImHelper.GetChanList().Select(a => new { a.chan, a.online }); var temp2 = Guid.NewGuid(); for (int i = 0; i < 10; i++) { var temp = Guid.NewGuid(); temp2 = temp; ImHelper.PrevConnectServer(temp, Ip); ImHelper.JoinChan(temp, "demoChan");//群聊,绑定消息频道 } ImHelper.SendChanMessage(newGuid, "demoChan", "hello word"); ImHelper.SendMessage(newGuid, new[] { temp2 }, " SendMessage hello word ", false); var rng = new Random(); return(Enumerable.Range(1, 5).Select(index => new WeatherForecast { Date = DateTime.Now.AddDays(index), TemperatureC = rng.Next(-20, 55), Summary = Summaries[rng.Next(Summaries.Length)] }) .ToArray()); }