NewHTTPBridgeServer 创建 HTTP 桥接服务器
(bridge *ToolBridge, addr string)
| 77 | |
| 78 | // NewHTTPBridgeServer 创建 HTTP 桥接服务器 |
| 79 | func NewHTTPBridgeServer(bridge *ToolBridge, addr string) *HTTPBridgeServer { |
| 80 | s := &HTTPBridgeServer{ |
| 81 | bridge: bridge, |
| 82 | server: &http.Server{ |
| 83 | Addr: addr, |
| 84 | ReadTimeout: 30 * time.Second, |
| 85 | WriteTimeout: 30 * time.Second, |
| 86 | // 性能优化: 配置更大的缓冲区 |
| 87 | ReadHeaderTimeout: 5 * time.Second, |
| 88 | MaxHeaderBytes: 1 << 20, // 1MB |
| 89 | // 启用 keep-alive 连接复用 |
| 90 | IdleTimeout: 120 * time.Second, |
| 91 | }, |
| 92 | // 初始化 Schema 缓存(5分钟TTL) |
| 93 | schemaCache: newSchemaCache(5 * time.Minute), |
| 94 | } |
| 95 | |
| 96 | // 设置路由 |
| 97 | mux := http.NewServeMux() |
| 98 | mux.HandleFunc("/tools/call", s.handleToolCall) |
| 99 | mux.HandleFunc("/tools/list", s.handleToolList) |
| 100 | mux.HandleFunc("/tools/schema", s.handleToolSchema) |
| 101 | mux.HandleFunc("/health", s.handleHealth) |
| 102 | |
| 103 | s.server.Handler = mux |
| 104 | return s |
| 105 | } |
| 106 | |
| 107 | // SetContextFactory 设置工具上下文工厂 |
| 108 | func (s *HTTPBridgeServer) SetContextFactory(factory func() *tools.ToolContext) { |