浏览代码

online 属于客户端一部分

luoyangwei 1 年之前
父节点
当前提交
38f44bfcf6
共有 2 个文件被更改,包括 4 次插入2 次删除
  1. 3 2
      server/client.go
  2. 1 0
      server/server.go

+ 3 - 2
server/client.go

@@ -18,6 +18,7 @@ type Client struct {
 	UserId         string
 	hub            *Hub
 	UnderlyingConn *websocket.Conn
+	online         *models.Online
 
 	isRemotely   bool   // isRemotely 是否是远程连接
 	isSimpleMsg  bool   // isSimpleMsg 是否是简单消息
@@ -49,6 +50,7 @@ func (c *Client) reader() {
 				zlog.Errorf("error: %v", err)
 			}
 			// Close connect
+			_ = c.repos.OnlineRepository.Offline(c.ctx, c.online)
 			break
 		}
 
@@ -56,8 +58,7 @@ func (c *Client) reader() {
 		switch message.Type {
 		case MessageTypePingPong:
 			zlog.Debugf("receive ping message from %s", c.UserId)
-			o := &models.Online{UserId: c.UserId, ServerId: c.hub.serverId}
-			_ = c.repos.OnlineRepository.Heartbeat(c.ctx, o)
+			_ = c.repos.OnlineRepository.Heartbeat(c.ctx, c.online)
 		case MessageTypeUpChating, MessageTypeDownChating:
 			// Chat dialogue messages
 			chatingContent := message.Content.(ChatingContent)

+ 1 - 0
server/server.go

@@ -53,6 +53,7 @@ func (srv *Server) WebsocketHandler(ctx *gin.Context) {
 		UserId:         id,
 		hub:            srv.Hub,
 		UnderlyingConn: conn,
+		online:         &models.Online{UserId: id, ServerId: srv.ID},
 		Send:           make(chan *Message, config.Websocket.MessageSize),
 		writeWait:      config.Websocket.WriteWait * time.Second,
 		readWait:       config.Websocket.ReadWait * time.Second,