public static void AddDaylily(this IServiceCollection services, StartupConfig startupConfig, Action configCallback = null) { var bot = new DaylilyCore(startupConfig, configCallback); bot.ConfigDispatcher(startupConfig.MessageDispatcher, startupConfig.GeneralDispatcherConfig); foreach (var frontend in startupConfig.Frontends) { bot.AddFrontend(frontend, startupConfig.GeneralFrontendsConfig); } services.AddSingleton(bot); }
public ApiController(Bot.DaylilyCore daylily) { _daylily = daylily; }
// This method gets called by the runtime. Use this method to configure the HTTP request pipeline. public void Configure(IApplicationBuilder app, IHostingEnvironment env, DaylilyCore daylily) { foreach (var frontend in daylily.Frontends) { if (frontend is CoolQFrontend cqFrontend && daylily.Dispatcher is CoolQDispatcher cqDispatcher) { //cqFrontend.PrivateMessageReceived += (sender, e) => { }; //cqFrontend.DiscussMessageReceived+= (sender, e) => { }; //cqFrontend.GroupMessageReceived += (sender, e) => { }; cqFrontend.Requested += (sender, e) => { daylily.EventDispatcher?.Event_Received(sender, new EventEventArgs(e.ParsedObject)); }; cqFrontend.Noticed += (sender, e) => { daylily.EventDispatcher?.Event_Received(sender, new EventEventArgs(e.ParsedObject)); }; //cqFrontend.EventReceived += (sender, e) => //{ // daylily.EventDispatcher?.Event_Received(sender, e); //}; } frontend.MessageReceived += (sender, e) => { daylily.MessageDispatcher?.Message_Received(sender, new MessageEventArgs(e.ParsedObject)); }; frontend.ErrorOccured += (sender, e) => { }; } var webSocketOptions = new WebSocketOptions() { KeepAliveInterval = TimeSpan.FromSeconds(120), ReceiveBufferSize = 4 * 1024 }; app.UseWebSockets(webSocketOptions); async Task WebSocket(HttpContext context, Func <Task> next) { if (context.Request.Path == "/ws") { if (context.WebSockets.IsWebSocketRequest) { SocketLogger.WebSocket = await context.WebSockets.AcceptWebSocketAsync(); await SocketLogger.Response(); } else { context.Response.StatusCode = 400; } } else { await next(); } } app.Use(WebSocket); Logger.Raw("Websocket控制台已启动。"); if (env.IsDevelopment()) { app.UseDeveloperExceptionPage(); } else { app.UseExceptionHandler("/Home/Error"); app.UseHsts(); } app.UseStaticFiles(); //app.UseHttpsRedirection(); app.UseCookiePolicy(); app.UseMvc(routes => { routes.MapRoute( name: "default", template: "{controller=Home}/{action=Index}/{id?}"); }); }