Files
crawlab/core/controllers/ws_writer.go
Marvin Zhang 3276083994 refactor: replace apex/log with structured logger across multiple services
- Replaced all instances of apex/log with a structured logger interface in various services, including Api, Server, Config, and others, to enhance logging consistency and context.
- Updated logging calls to utilize the new logger methods, improving error tracking and service monitoring.
- Added logger initialization in services and controllers to ensure proper logging setup.
- Improved error handling and logging messages for better clarity during service operations.
- Removed unused apex/log imports and cleaned up related code for better maintainability.
2024-12-24 19:11:19 +08:00

55 lines
1.2 KiB
Go

package controllers
import (
"github.com/gin-gonic/gin"
"github.com/gorilla/websocket"
"io"
http2 "net/http"
)
type WsWriter struct {
io.Writer
io.Closer
conn *websocket.Conn
}
func (w *WsWriter) Write(data []byte) (n int, err error) {
logger.Infof("websocket write: %s", string(data))
err = w.conn.WriteMessage(websocket.TextMessage, data)
if err != nil {
return 0, err
}
return len(data), nil
}
func (w *WsWriter) Close() (err error) {
return w.conn.Close()
}
func (w *WsWriter) CloseWithText(text string) {
_ = w.conn.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseNormalClosure, text))
}
func (w *WsWriter) CloseWithError(err error) {
_ = w.conn.WriteMessage(websocket.CloseMessage, websocket.FormatCloseMessage(websocket.CloseInternalServerErr, err.Error()))
}
func NewWsWriter(c *gin.Context) (writer *WsWriter, err error) {
upgrader := websocket.Upgrader{
ReadBufferSize: 1024,
WriteBufferSize: 1024,
CheckOrigin: func(r *http2.Request) bool {
return true
},
}
conn, err := upgrader.Upgrade(c.Writer, c.Request, nil)
if err != nil {
logger.Errorf("websocket open connection error: %v", err)
}
return &WsWriter{
conn: conn,
}, nil
}