# EarthChat **Repository Path**: hassannjm_admin/chat ## Basic Information - **Project Name**: EarthChat - **Description**: EarthChat,一个可支撑百万用户的在线聊天系统 - **Primary Language**: C# - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: https://chat.tokengo.top - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 59 - **Created**: 2025-09-19 - **Last Updated**: 2025-09-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EarthChat 全新版本 微服务设计的EarthChat,自研网关,无需服务发现,支持即可支持服务自动代理 ```mermaid graph TD A[Kestrel 接收请求] --> B[YARP 路由请求] B --> C[HttpClient 处理请求] C --> D[连接池检查] D --> E{是否有可用连接?} E -- 是 --> F[复用连接] E -- 否 --> G[创建新连接] G --> H[将连接加入连接池] F --> I[请求发送至目标节点] H --> I[请求发送至目标节点] I --> J[目标节点处理请求] J --> K[节点返回接口响应] ``` ### 流程说明: 1. **Kestrel 接收请求**:Kestrel 作为 ASP.NET Core 的 Web 服务器,接收来自客户端的 HTTP 请求。 2. **YARP 路由请求**:YARP(Yet Another Reverse Proxy)根据配置的路由规则,将请求转发。 3. **HttpClient 处理请求**:YARP 使用 `HttpClient` 来处理转发的 HTTP 请求。 4. **连接池检查**:`HttpClient` 会检查连接池中是否有可用的连接。 5. **是否有可用连接**: - 如果有可用连接,则复用该连接。 - 如果没有可用连接,则创建一个新的连接,并将其加入到连接池中。 6. **请求发送至目标节点**:通过已有或新建的连接,将请求发送到目标节点。 7. **目标节点处理请求**:目标节点处理请求,并返回接口响应。 8. **返回响应给客户端**:通过 Kestrel 将目标节点的响应返回给客户端。