MCPcopy
hub / github.com/QuantumNous/new-api / DoWssRequest

Function DoWssRequest

relay/channel/api_request.go:369–397  ·  view source on GitHub ↗
(a Adaptor, c *gin.Context, info *common.RelayInfo, requestBody io.Reader)

Source from the content-addressed store, hash-verified

367}
368
369func DoWssRequest(a Adaptor, c *gin.Context, info *common.RelayInfo, requestBody io.Reader) (*websocket.Conn, error) {
370 fullRequestURL, err := a.GetRequestURL(info)
371 if err != nil {
372 return nil, fmt.Errorf("get request url failed: %w", err)
373 }
374 targetHeader := http.Header{}
375 err = a.SetupRequestHeader(c, &targetHeader, info)
376 if err != nil {
377 return nil, fmt.Errorf("setup request header failed: %w", err)
378 }
379 // 在 SetupRequestHeader 之后应用 Header Override,确保用户设置优先级最高
380 // 这样可以覆盖默认的 Authorization header 设置
381 headerOverride, err := processHeaderOverride(info, c)
382 if err != nil {
383 return nil, err
384 }
385 for key, value := range headerOverride {
386 targetHeader.Set(key, value)
387 }
388 targetHeader.Set("Content-Type", c.Request.Header.Get("Content-Type"))
389 targetConn, _, err := websocket.DefaultDialer.Dial(fullRequestURL, targetHeader)
390 if err != nil {
391 return nil, fmt.Errorf("dial failed to %s: %w", fullRequestURL, err)
392 }
393 // send request body
394 //all, err := io.ReadAll(requestBody)
395 //err = service.WssString(c, targetConn, string(all))
396 return targetConn, nil
397}
398
399func startPingKeepAlive(c *gin.Context, pingInterval time.Duration) context.CancelFunc {
400 pingerCtx, stopPinger := context.WithCancel(context.Background())

Callers 2

DoRequestMethod · 0.92
DoRequestMethod · 0.92

Calls 5

processHeaderOverrideFunction · 0.85
SetMethod · 0.80
GetRequestURLMethod · 0.65
SetupRequestHeaderMethod · 0.65
GetMethod · 0.45

Tested by

no test coverage detected