http, websocket api handler 추가
This commit is contained in:
@ -85,6 +85,8 @@ type send_msg_queue_elem struct {
|
||||
}
|
||||
|
||||
type WebsocketHandler struct {
|
||||
WebsocketApiBroker
|
||||
|
||||
redisMsgChanName string
|
||||
redisCmdChanName string
|
||||
redisSync *redis.Client
|
||||
@ -93,7 +95,6 @@ type WebsocketHandler struct {
|
||||
localDeliveryChan chan any
|
||||
sendMsgChan chan send_msg_queue_elem
|
||||
|
||||
wsApiBroker WebsocketApiBroker
|
||||
connWaitGroup sync.WaitGroup
|
||||
sessionConsumer session.Consumer
|
||||
}
|
||||
@ -121,7 +122,7 @@ func NewWebsocketHandler(consumer session.Consumer, redisUrl string) (*Websocket
|
||||
|
||||
redisSync, err := gocommon.NewRedisClient(redisUrl)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
return nil, logger.ErrorWithCallStack(err)
|
||||
}
|
||||
|
||||
sendchan := make(chan send_msg_queue_elem, 1000)
|
||||
@ -153,10 +154,6 @@ func NewWebsocketHandler(consumer session.Consumer, redisUrl string) (*Websocket
|
||||
}, nil
|
||||
}
|
||||
|
||||
func (ws *WebsocketHandler) RegisterApiHandler(handler WebsocketApiHandler) {
|
||||
ws.wsApiBroker.AddHandler(handler)
|
||||
}
|
||||
|
||||
func (ws *WebsocketHandler) Start(ctx context.Context) {
|
||||
ws.connWaitGroup.Add(1)
|
||||
go ws.mainLoop(ctx)
|
||||
@ -260,7 +257,7 @@ func (ws *WebsocketHandler) mainLoop(ctx context.Context) {
|
||||
|
||||
defer func() {
|
||||
for _, conn := range entireConns {
|
||||
ws.wsApiBroker.Call(conn.sender, ClientDisconnected, nil)
|
||||
ws.Call(conn.sender, ClientDisconnected, nil)
|
||||
conn.Close()
|
||||
}
|
||||
}()
|
||||
@ -414,10 +411,12 @@ func (ws *WebsocketHandler) mainLoop(ctx context.Context) {
|
||||
case c := <-ws.connInOutChan:
|
||||
if c.Conn == nil {
|
||||
delete(entireConns, c.sender.Accid.Hex())
|
||||
go ws.wsApiBroker.Call(c.sender, ClientDisconnected, nil)
|
||||
logger.Println("ClientDisconnected :", c.sender.Alias)
|
||||
go ws.ClientDisconnected(c)
|
||||
} else {
|
||||
entireConns[c.sender.Accid.Hex()] = c
|
||||
go ws.wsApiBroker.Call(c.sender, ClientConnected, nil)
|
||||
logger.Println("ClientConnected :", c.sender.Alias)
|
||||
go ws.ClientConnected(c)
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -451,7 +450,7 @@ func upgrade_core(ws *WebsocketHandler, conn *websocket.Conn, accid primitive.Ob
|
||||
r.Read(size[:])
|
||||
cmd := make([]byte, size[0])
|
||||
r.Read(cmd)
|
||||
ws.wsApiBroker.Call(newconn.sender, string(cmd), r)
|
||||
ws.Call(newconn.sender, string(cmd), r)
|
||||
}
|
||||
}
|
||||
ws.connWaitGroup.Done()
|
||||
|
||||
Reference in New Issue
Block a user