mirror of
https://github.com/xinliangnote/go-gin-api.git
synced 2024-04-21 12:31:46 +00:00
60 lines
1014 B
Go
60 lines
1014 B
Go
package socket_server
|
|
|
|
import (
|
|
"github.com/xinliangnote/go-gin-api/internal/pkg/cache"
|
|
"github.com/xinliangnote/go-gin-api/internal/pkg/db"
|
|
"github.com/xinliangnote/go-gin-api/pkg/errors"
|
|
|
|
"github.com/gorilla/websocket"
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
var _ Server = (*server)(nil)
|
|
|
|
type server struct {
|
|
logger *zap.Logger
|
|
db db.Repo
|
|
cache cache.Repo
|
|
socket *websocket.Conn
|
|
}
|
|
|
|
type Server interface {
|
|
i()
|
|
|
|
// OnMessage 接收消息
|
|
OnMessage()
|
|
|
|
// OnSend 发送消息
|
|
OnSend(message []byte) error
|
|
|
|
// OnClose 关闭
|
|
OnClose()
|
|
}
|
|
|
|
func New(logger *zap.Logger, db db.Repo, cache cache.Repo, conn *websocket.Conn) (Server, error) {
|
|
if logger == nil {
|
|
return nil, errors.New("logger required")
|
|
}
|
|
|
|
if db == nil {
|
|
return nil, errors.New("db required")
|
|
}
|
|
|
|
if cache == nil {
|
|
return nil, errors.New("cache required")
|
|
}
|
|
|
|
if conn == nil {
|
|
return nil, errors.New("conn required")
|
|
}
|
|
|
|
return &server{
|
|
logger: logger,
|
|
db: db,
|
|
cache: cache,
|
|
socket: conn,
|
|
}, nil
|
|
}
|
|
|
|
func (s *server) i() {}
|