mirror of
https://github.com/xinliangnote/go-gin-api.git
synced 2024-04-21 12:31:46 +00:00
50 lines
987 B
Go
50 lines
987 B
Go
package sysmessage
|
|
|
|
import (
|
|
"github.com/xinliangnote/go-gin-api/internal/pkg/core"
|
|
"github.com/xinliangnote/go-gin-api/internal/repository/mysql"
|
|
"github.com/xinliangnote/go-gin-api/internal/repository/redis"
|
|
"github.com/xinliangnote/go-gin-api/internal/repository/socket"
|
|
"github.com/xinliangnote/go-gin-api/pkg/errors"
|
|
|
|
"go.uber.org/zap"
|
|
)
|
|
|
|
var (
|
|
err error
|
|
server socket.Server
|
|
)
|
|
|
|
type handler struct {
|
|
logger *zap.Logger
|
|
cache redis.Repo
|
|
db mysql.Repo
|
|
}
|
|
|
|
func New(logger *zap.Logger, db mysql.Repo, cache redis.Repo) *handler {
|
|
return &handler{
|
|
logger: logger,
|
|
cache: cache,
|
|
db: db,
|
|
}
|
|
}
|
|
|
|
func GetConn() (socket.Server, error) {
|
|
if server != nil {
|
|
return server, nil
|
|
}
|
|
|
|
return nil, errors.New("conn is nil")
|
|
}
|
|
|
|
func (h *handler) Connect() core.HandlerFunc {
|
|
return func(ctx core.Context) {
|
|
server, err = socket.New(h.logger, h.db, h.cache, ctx.ResponseWriter(), ctx.Request(), nil)
|
|
if err != nil {
|
|
return
|
|
}
|
|
|
|
go server.OnMessage()
|
|
}
|
|
}
|