재접속시 세션 재확인

This commit is contained in:
2025-08-15 12:06:38 +09:00
parent c449bae5ef
commit d26b3b9295

View File

@ -364,14 +364,15 @@ func (ws *WebsocketHandler) mainLoop(ctx context.Context) {
buffer := bytes.NewBuffer([]byte(raw.Payload))
dec := gob.NewDecoder(buffer)
if raw.Channel == ws.redisMsgChanName {
switch raw.Channel {
case ws.redisMsgChanName:
var msg UpstreamMessage
if err := dec.Decode(&msg); err == nil {
ws.deliveryChan <- &msg
} else {
logger.Println("decode UpstreamMessage failed :", err)
}
} else if raw.Channel == ws.redisCmdChanName {
case ws.redisCmdChanName:
var cmd commandMessage
if err := dec.Decode(&cmd); err == nil {
ws.deliveryChan <- &cmd
@ -587,9 +588,17 @@ func (ws *WebsocketHandler) mainLoop(ctx context.Context) {
if c.Conn == nil {
delete(entireConns, c.sender.Accid.Hex())
go ws.ClientDisconnected(c)
} else if ws.sessionConsumer.IsRevoked(c.sender.Accid) {
c.Conn.MakeWriter().WriteControl(websocket.CloseMessage, unauthdata, time.Time{})
} else {
entireConns[c.sender.Accid.Hex()] = c
go ws.ClientConnected(c)
sk := session.AccountToSessionKey(c.sender.Accid)
auth, _ := ws.sessionConsumer.Query(sk)
if auth.Account != c.sender.Accid {
c.Conn.MakeWriter().WriteControl(websocket.CloseMessage, unauthdata, time.Time{})
} else {
entireConns[c.sender.Accid.Hex()] = c
go ws.ClientConnected(c)
}
}
case accid := <-ws.forceCloseChan: