public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); Console.OutputEncoding = Encoding.GetEncoding("GB2312"); Console.InputEncoding = Encoding.GetEncoding("GB2312"); loggerFactory.AddConsole(LogLevel.Error); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } app.UseDefaultFiles(); app.UseStaticFiles(); app.UseMvc(); app.UseSwagger().UseSwaggerUI(); ImHelper.Initialization(new ImClientOptions { Redis = new CSRedis.CSRedisClient("127.0.0.1:6379,poolsize=5"), Servers = new[] { "127.0.0.1:6001" } }); ImHelper.Instance.OnSend += (s, e) => Console.WriteLine($"ImClient.SendMessage(server={e.Server},data={JsonConvert.SerializeObject(e.Message)})"); ImHelper.EventBus( t => { Console.WriteLine(t.clientId + "上线了"); var onlineUids = ImHelper.GetClientListByOnline(); ImHelper.SendMessage(t.clientId, onlineUids, $"用户{t.clientId}上线了"); }, t => Console.WriteLine(t.clientId + "下线了")); }
public void Configure(IApplicationBuilder app) { Encoding.RegisterProvider(CodePagesEncodingProvider.Instance); Console.OutputEncoding = Encoding.GetEncoding("GB2312"); Console.InputEncoding = Encoding.GetEncoding("GB2312"); app.UseDeveloperExceptionPage(); app.UseRouting(); app.UseEndpoints(config => config.MapControllers()); app.UseDefaultFiles(); app.UseStaticFiles(); ImHelper.Initialization(new ImClientOptions { Redis = new CSRedis.CSRedisClient("118.25.209.177:26379,idleTimeout=3000,poolsize=5"), Servers = new[] { "127.0.0.1:6001" } }); ImHelper.Instance.OnSend += (s, e) => Console.WriteLine($"ImClient.SendMessage(server={e.Server},data={JsonConvert.SerializeObject(e.Message)})"); ImHelper.EventBus( t => { Console.WriteLine(t.clientId + "上线了"); var onlineUids = ImHelper.GetClientListByOnline(); ImHelper.SendMessage(t.clientId, onlineUids, $"用户{t.clientId}上线了"); }, t => Console.WriteLine(t.clientId + "下线了")); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { // The default HSTS value is 30 days. You may want to change this for production scenarios, see https://aka.ms/aspnetcore-hsts. app.UseHsts(); } app.UseStaticFiles(); app.UseSwagger().UseSwaggerUI(c => { c.SwaggerEndpoint("/swagger/v1/swagger.json", "V1 Docs"); c.DocExpansion(DocExpansion.None); }); ImHelper.Initialization(new ImClientOptions { Redis = new CSRedis.CSRedisClient("127.0.0.1:6379,poolsize=5"), Servers = new[] { "127.0.0.1:6001" } }); ImHelper.Instance.OnSend += (s, e) => Console.WriteLine($"ImClient.SendMessage(server={e.Server},data={JsonConvert.SerializeObject(e.Message)})"); ImHelper.EventBus( t => { Console.WriteLine(t.clientId + "上线了"); var onlineUids = ImHelper.GetClientListByOnline(); ImHelper.SendMessage(t.clientId, onlineUids, $"用户{t.clientId}上线了"); }, t => Console.WriteLine(t.clientId + "下线了")); app.UseHttpsRedirection(); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapControllerRoute( name: "default", pattern: "{controller=Home}/{action=Index}/{id?}"); }); }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IWebHostEnvironment env) { var virtualPath = Configuration["virtualPath"]; if (env.IsDevelopment()) { virtualPath = ""; app.UseDeveloperExceptionPage(); } app.UseCors("all"); //启用中间件服务生成Swagger作为JSON终结点 app.UseSwagger(); //启用中间件服务对swagger-ui,指定Swagger JSON终结点 app.UseSwaggerUI(c => { c.SwaggerEndpoint(virtualPath + "/swagger/v1/swagger.json", "IM API V1"); }); ImHelper.Initialization(new ImClientOptions { Redis = new CSRedis.CSRedisClient(Configuration["ImServerOption:CSRedisClient"]), Servers = Configuration["ImServerOption:Servers"].Split(";"),//IMsever的地址,外网地址 WsType = Configuration["ImServerOption:SslType"] }); ImHelper.Instance.OnSend += (s, e) => Console.WriteLine($"ImClient.SendMessage(server={e.Server},data={JsonConvert.SerializeObject(e.Message)})"); ImHelper.EventBus( t => { Console.WriteLine(t.clientId + "上线了"); var onlineUids = ImHelper.GetClientListByOnline(); ImHelper.SendMessage(t.clientId, onlineUids, $"用户{t.clientId}上线了"); }, t => Console.WriteLine(t.clientId + "下线了")); app.UseRouting(); app.UseEndpoints(endpoints => { endpoints.MapControllers(); }); }
static DDZGamePlayController() { ConcurrentDictionary <Guid, (Player, DateTime)> offlineSitdownDic = new ConcurrentDictionary <Guid, (Player, DateTime)>(); timer = new Timer(state => { foreach (var k in offlineSitdownDic.Keys) { if (offlineSitdownDic.TryGetValue(k, out var tryval) && DateTime.Now.Subtract(tryval.Item2).TotalSeconds > 4) { try { var ddzid = redis.HGet("ddz_gameplay_player_ht", tryval.Item1.Id.ToString()); if (!string.IsNullOrEmpty(ddzid)) { var ddz = GamePlay.GetById(ddzid); foreach (var pl in ddz.Data.players) { if (pl.id == tryval.Item1.Nick) { pl.score = ddz.Data.multiple * (ddz.Data.multipleAddition + ddz.Data.bong) * -2; pl.status = GamePlayerStatus.逃跑; } else { pl.score = ddz.Data.multiple * (ddz.Data.multipleAddition + ddz.Data.bong); } } ddz.Data.stage = GameStage.游戏结束; ddz.SaveData(); } StandupStatic(tryval.Item1).Wait(); } catch { } } } }, null, 2000, 2000); ImHelper.EventBus( t => { Console.WriteLine(t.clientId + "上线了"); try { var onlineUids = ImHelper.GetClientListByOnline(); ImHelper.SendMessage(t.clientId, onlineUids, $"用户{t.clientId}上线了"); if (offlineSitdownDic.TryRemove(t.clientId, out var oldval)) { var ddzid = redis.HGet("ddz_gameplay_player_ht", t.clientId.ToString()); if (!string.IsNullOrEmpty(ddzid)) { var ddz = GamePlay.GetById(ddzid); var player = Player.Find(t.clientId); SendGameMessage(ddz, new[] { player }); } } } catch { } }, t => { Console.WriteLine(t.clientId + "下线了"); try { //用户离线后4秒,才退出座位 if (redis.HExists("sitdown_player_ht", t.clientId.ToString())) { var player = Player.Find(t.clientId); if (player != null) { offlineSitdownDic.TryAdd(t.clientId, (player, DateTime.Now)); } } } catch { } }); GamePlay.OnGameOver = game => OnGameOver(game); GamePlay.OnOperatorTimeout = game => SendGameMessage(game, null); redis.Del("sitdown_ht", "sitdown_player_ht"); }