Ejemplo n.º 1
0
Archivo: Startup.cs Proyecto: sososu/im
        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 + "下线了"));
        }
Ejemplo n.º 2
0
        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 + "下线了"));
        }
Ejemplo n.º 3
0
        // 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?}");
            });
        }
Ejemplo n.º 4
0
        // 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();
            });
        }
Ejemplo n.º 5
0
        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");
        }