mirror of
https://github.com/router-for-me/CLIProxyAPI.git
synced 2026-02-03 04:50:52 +08:00
feat: add websocket routing and executor unregister API
- Introduce Server.AttachWebsocketRoute(path, handler) to mount websocket upgrade handlers on the Gin engine. - Track registered WS paths via wsRoutes with wsRouteMu to prevent duplicate registrations; initialize in NewServer and import sync. - Add Manager.UnregisterExecutor(provider) for clean executor lifecycle management. - Add github.com/gorilla/websocket v1.5.3 dependency and update go.sum. Motivation: enable services to expose WS endpoints through the core server and allow removing auth executors dynamically while avoiding duplicate route setup. No breaking changes.
This commit is contained in:
27
internal/wsrelay/message.go
Normal file
27
internal/wsrelay/message.go
Normal file
@@ -0,0 +1,27 @@
|
||||
package wsrelay
|
||||
|
||||
// Message represents the JSON payload exchanged with websocket clients.
|
||||
type Message struct {
|
||||
ID string `json:"id"`
|
||||
Type string `json:"type"`
|
||||
Payload map[string]any `json:"payload,omitempty"`
|
||||
}
|
||||
|
||||
const (
|
||||
// MessageTypeHTTPReq identifies an HTTP-style request envelope.
|
||||
MessageTypeHTTPReq = "http_request"
|
||||
// MessageTypeHTTPResp identifies a non-streaming HTTP response envelope.
|
||||
MessageTypeHTTPResp = "http_response"
|
||||
// MessageTypeStreamStart marks the beginning of a streaming response.
|
||||
MessageTypeStreamStart = "stream_start"
|
||||
// MessageTypeStreamChunk carries a streaming response chunk.
|
||||
MessageTypeStreamChunk = "stream_chunk"
|
||||
// MessageTypeStreamEnd marks the completion of a streaming response.
|
||||
MessageTypeStreamEnd = "stream_end"
|
||||
// MessageTypeError carries an error response.
|
||||
MessageTypeError = "error"
|
||||
// MessageTypePing represents ping messages from clients.
|
||||
MessageTypePing = "ping"
|
||||
// MessageTypePong represents pong responses back to clients.
|
||||
MessageTypePong = "pong"
|
||||
)
|
||||
Reference in New Issue
Block a user