tweak: replace coder/websocket with gorilla/websocket

This commit is contained in:
yusing
2025-05-19 23:15:11 +08:00
parent cee6eaecff
commit 1f50ee7f2f
16 changed files with 96 additions and 83 deletions

View File

@@ -1,15 +1,18 @@
package dockerapi
import (
"context"
"errors"
"net/http"
"strconv"
"github.com/coder/websocket"
"github.com/docker/docker/api/types/container"
"github.com/docker/docker/pkg/stdcopy"
"github.com/gorilla/websocket"
"github.com/yusing/go-proxy/internal/logging"
"github.com/yusing/go-proxy/internal/net/gphttp"
"github.com/yusing/go-proxy/internal/net/gphttp/gpwebsocket"
"github.com/yusing/go-proxy/internal/task"
)
func Logs(w http.ResponseWriter, r *http.Request) {
@@ -31,6 +34,7 @@ func Logs(w http.ResponseWriter, r *http.Request) {
gphttp.NotFound(w, "server not found")
return
}
defer dockerClient.Close()
opts := container.LogsOptions{
ShowStdout: stdout,
@@ -56,11 +60,14 @@ func Logs(w http.ResponseWriter, r *http.Request) {
if err != nil {
return
}
defer conn.CloseNow()
defer conn.Close()
writer := gpwebsocket.NewWriter(r.Context(), conn, websocket.MessageText)
writer := gpwebsocket.NewWriter(r.Context(), conn, websocket.TextMessage)
_, err = stdcopy.StdCopy(writer, writer, logs) // de-multiplex logs
if err != nil {
if errors.Is(err, context.Canceled) || errors.Is(err, task.ErrProgramExiting) {
return
}
logging.Err(err).
Str("server", server).
Str("container", containerID).

View File

@@ -6,8 +6,7 @@ import (
"net/http"
"time"
"github.com/coder/websocket"
"github.com/coder/websocket/wsjson"
"github.com/gorilla/websocket"
config "github.com/yusing/go-proxy/internal/config/types"
"github.com/yusing/go-proxy/internal/docker"
"github.com/yusing/go-proxy/internal/gperr"
@@ -65,10 +64,12 @@ func getDockerClient(server string) (*docker.SharedClient, bool, error) {
break
}
}
for _, agent := range cfg.ListAgents() {
if agent.Name() == server {
host = agent.FakeDockerHost()
break
if host == "" {
for _, agent := range cfg.ListAgents() {
if agent.Name() == server {
host = agent.FakeDockerHost()
break
}
}
}
if host == "" {
@@ -115,7 +116,7 @@ func serveHTTP[V any, T ResultType[V]](w http.ResponseWriter, r *http.Request, g
if err != nil {
return err
}
return wsjson.Write(r.Context(), conn, result)
return conn.WriteJSON(result)
})
} else {
result, err := getResult(r.Context(), dockerClients)